web-dev-qa-db-ja.com

コマンドラインからTestNGを実行する方法

コマンドラインから.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を正しく参照していません。誰もこれを機能させる方法を知っていますか?

25
Fuzzy Analysis

クラスパスの下に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ファイルのフルパスを指定してください

22
Patton

からサンプルを実行できなかった理由を理解しようとして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の場所を表します。必要なすべてのパスを取得したら、「;」を使用して追加します。

私はあなた方の何人かに助けられたことを望みます:)

6
stewazy

本当にありがとうございました。コマンドラインを使用して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ケースが実行されます。

5
Karthic.K

次の内容の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
3
gumkins

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
3
sudheer test

以下のコマンドが動作します。 testng jarを含むすべての必要なjarがlib内に保持されていることを条件とします。

Java -cp "lib/*" org.testng.TestNG testng.xml
3
Satish A

EclipseからTestNGプラグインをダウンロードしたため、同じ問題に直面していました。ここで私が仕事を成し遂げるためにしたこと:

  1. TestNGをプロジェクトライブラリに追加した後、プロジェクト名にlibという名前のフォルダーを1つ作成します(名前は何でもかまいません)。

  2. 「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です

  1. CMDを起動し、プロジェクトディレクトリに移動して、次のように入力します。
    Java -cp C:\ Users\User123\TestNG\lib *; C:\ Users\User123\TestNG\bin org.testng.TestNG testng.xml

それでおしまい !
他に懸念がある場合はお知らせください。

2
cruisepandey

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\
1
Arya

Windowsでjarおよびクラスファイルのパスを指定するときは、区切り文字としてセミコロンを使用する必要があります。これで問題は解決しました。
クラスファイルがC:。の下にあると仮定します

Java -cp ".;C:\testng.jar" org.testng.TestNG testing.xml
1
Pratap

上記のいずれの回答も機能しない場合は、IDEでテストを実行し、クラスパスを取得してコマンドで使用できます。例:Intellij IDEAを使用している場合、コンソールの上部にあります(下のスクリーンショット)。 Intellij Console

強調表示された部分をクリックすると、展開され、完全なクラスパスが表示されます。

フォルダ内のjarへの参照を削除する必要があります:JetBrains\IntelliJ IDEA Community Edition 2019.1.3

Java -cp "path_copied" org.testng.TestNG testng.xml

0
Tilak