コマンドラインから.Java TestNGプロジェクトを正確に実行するにはどうすればよいですか?
TestNGのドキュメントを読んで、次のことを試みましたが無駄でした。
C:\projectfred> Java org.testng.TestNG testng.xml
...私のプロジェクトに次のtestng.xmlファイルがあります:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="SuiteAll" verbose="1">
<test name="TestAll">
<packages>
<package name="com.project.fred.tests"/>
</packages>
</test>
</suite>
私が得るエラーはこれです:
Exception in thread "main" Java.lang.NoClassDefFoundError: org/testng/TestNG
Caused by: Java.lang.ClassNotFoundException: org.testng.TestNG
at Java.net.URLClassLoader$1.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
at Sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at Java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: org.testng.TestNG. Program will exit.
明らかに、コマンドラインでTestNGを正しく参照していません。誰もこれを機能させる方法を知っていますか?
クラスパスの下にtestng.jar
が必要です。
C:\projectfred> Java -cp "path-tojar/testng.jar:path_to_yourtest_classes" org.testng.TestNG testng.xml
を試してください
更新:
Linuxではこのコマンドを実行しましたが、Windowsでも似たようなものになります
test/bin# Java -cp ".:../lib/*" org.testng.TestNG testng.xml
ディレクトリ構造:
/bin - All my test packages are under bin including testng.xml
/src - All source files are under src
/lib - All libraries required for the execution of tests are under this.
すべてのソースをコンパイルしたら、それらはbinディレクトリに移動します。そのため、クラスパスでは、binディレクトリの内容と、testng.xml、ロガーなどのすべてのライブラリをここで指定する必要があります。また、testng.xmlが使用可能な完全パスを指定したくない場合は、testng.xmlをbinフォルダーにコピーします。
/bin
-- testng.xml
-- testclasses
-- Properties files if any.
/lib
-- testng.jar
-- log4j.jar
Update
:
フォルダーMyProject
に移動し、次のようにJavaコマンドを実行します:
Java -cp ".: C:\Program Files\jbdevstudio4\studio\plugins\*" org.testng.TestNG testng.xml
Testng.xmlファイルはC:\Users\me\workspace\MyProject
の下にあると思います。そうでない場合は、testng.xml
ファイルのフルパスを指定してください
からサンプルを実行できなかった理由を理解しようとして2日後に
http://www.tutorialspoint.com/testng/testng_environment.htm 次のコードは機能しませんでした
C:\TestNG_WORKSPACE>Java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
それに対する修正は次のとおりです:私は次の結論に達しました:最初にEclipseをインストールし、TestNGプラグインをダウンロードします。その後、チュートリアルの指示に従って、javacを使用してcmdからテストクラスを作成およびコンパイルし、testng.xmlを追加します。 Windows 10 cmdでtestng.xmlを実行するには、次の行を実行します。
Java -cp C:\Users\Lenovo\Desktop\Eclipse\plugins\org.testng.Eclipse_6.9.12.201607091356\lib\*;C:\Test org.testng.TestNG testng.xml
明確にするために: C:\Users\Lenovo\Desktop\Eclipse\plugins\org.testng.Eclipse_6.9.12.201607091356\lib\*
上記のパスは、Eclipse用TESTNGプラグインをインストールすることでダウンロードしたjcommander.jarおよびtestng.jarの場所を表します。パスは異なる場合があるため、Eclipseのインストール場所を開き、プラグインに移動してjcommander.jarを検索します。次に、その場所をコピーし、その後*を追加して必要なすべての.jarを選択します。
C:\Test
上記のパスは、プロジェクト内のtesting.xmlの場所を表します。必要なすべてのパスを取得したら、「;」を使用して追加します。
私はあなた方の何人かに助けられたことを望みます:)
本当にありがとうございました。コマンドラインを使用してTestNGクラスを実行できましたが、最後にもう一度次のようにまとめたいと思います。
1) Set the classpath for the testng.jar in the environment variables
(either manually or via command line).
2) Create a new folder "MyTest".
3) Compile all your classes(testNG+Java) and put them(.class files )
in a new folder "Mytest\bin".
4) Put your 'testng.xml' and '.properties' files to "Mytest\bin"
again.
5) Put all the .jar files (testng,Selenium... etc) in a new folder
"Mytest\lib".
6) Browse to the folder "bin" via command line and run the command
Java -cp "..\lib\*;" org.testng.TestNG testng.xml
これにより、testNGケースが実行されます。
次の内容のMANIFEST.MF
ファイルを準備します
Manifest-Version: 1.0
Main-Class: org.testng.TestNG
すべてのテストクラスと依存関係クラスを同じjarにパックします。たとえば、tests.jar
jar cmf MANIFEST.MF tests.jar -C folder-with-classes/ .
末尾の「。」に注意し、folder-with-classes/
を適切なフォルダー名またはパスに置き換えます。
以下のようなコンテンツでtestng.xml
を作成します
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Tests" verbose="5">
<test name="Test1">
<classes>
<class name="com.example.yourcompany.qa.Test1"/>
</classes>
</test>
</suite>
com.example.yourcompany.qa.Test1
をTestクラスへのパスに置き換えます。
テストを実行する
Java -jar tests.jar testng.xml
Windowsの問題で区切り文字として「;」を使用すると解決しました。
Java -cp "path of class files; testng jar file path" org.testng.TestNG testng.xml
例:-
Java -cp ".\bin;..\common_lib\*;" org.testng.TestNG testng.xml
以下のコマンドが動作します。 testng jarを含むすべての必要なjarがlib内に保持されていることを条件とします。
Java -cp "lib/*" org.testng.TestNG testng.xml
EclipseからTestNGプラグインをダウンロードしたため、同じ問題に直面していました。ここで私が仕事を成し遂げるためにしたこと:
TestNGをプロジェクトライブラリに追加した後、プロジェクト名にlibという名前のフォルダーを1つ作成します(名前は何でもかまいません)。
「C:\ Program Files\Eclipse\eclipse-Java-mars-R-win32-x86_64\Eclipse\plugins」の場所に移動して、com.beust.jcommander_1.72.0.jarおよびorg.testng_6.14.2.r20180216145.jarファイルから作成されたフォルダー(lib)。
注:ファイルはtestng.jarおよびjcommander.jarです
それでおしまい !
他に懸念がある場合はお知らせください。
Mavenを使用している場合は、cmd行から簡単に実行し、testng.xml(または実行されるすべてのクラスを含むxml)が含まれるディレクトリにcdして、このcmdを実行できます。
mvn clean test -DsuiteXmlFile=testng.xml
このページでは、より詳細に説明します。 Mavenコマンドラインからtestng.xmlを実行する方法
あなたがMavenを使用しているかどうかが重要かどうかわからなかったので、検索用語に含めませんでした。他の人が私と同じ状況にある場合、ここで言及するつもりでした。
さまざまな投稿を行った後、IntelliJ Idea
:
Java -cp "./lib/*;Path to your test.class" org.testng.TestNG testng.xml
これが私のディレクトリ構造です:
/lib
-- all jar including testng.jar
/out
--/production/Example1/test.class
/src
-- test.Java
testing.xml
したがって、次のコマンドで実行します。
Java -cp "./lib/*;C:\Users\xyz\IdeaProjects\Example1\out\production\Example1" org.testng.TestNG testng.xml
私のプロジェクトディレクトリExample1
はパスにあります。
C:\Users\xyz\IdeaProjects\
Windowsでjarおよびクラスファイルのパスを指定するときは、区切り文字としてセミコロンを使用する必要があります。これで問題は解決しました。
クラスファイルがC:。の下にあると仮定します
Java -cp ".;C:\testng.jar" org.testng.TestNG testing.xml