5

すべての依存関係とテスト クラスを含む実行可能な JAR があります。jarを実行するとmain()メソッドが呼び出されることを確認しました。特定の TestNG テスト クラスを実行できるように、コードを main() に追加しようとしています。TestNG.orgのドキュメントから、これはそれを行う方法のようです:

    TestListenerAdapter tla = new TestListenerAdapter();
    TestNG testng = new TestNG();
    testng.setTestClasses(new Class[] { com.some.path.tests.MyTests.class });
    testng.addListener(tla);
    testng.run();

私のフォルダ構造は典型的です:

    /src/main/java/Main.java
    /src/test/java/com/some/path/tests/MyTests.java

ただし、コンパイルしようとすると、次のエラーが発生します。

    java: /src/main/java/Main.java:46: package com.some.path.tests does not exist

main() の testng.setTestClasses() がテスト クラスにアクセスできるようにプロジェクトを変更できる方法はありますか?

4

3 に答える 3

7

org.testng.xml.Parserとを使用して、通常のxmlをメインにロードできますorg.testng.xml.XmlSuite

String xmlFileName = "testng.xml";
List<XmlSuite> suite;
try
{
    suite = (List <XmlSuite>)(new Parser(xmlFileName).parse());
    testng.setXmlSuites(suite);
    testng.run();
}
catch (ParserConfigurationException e)
{
    e.printStackTrace();
}
catch (SAXException e)
{
    e.printStackTrace();
}
catch (IOException e)
{
    e.printStackTrace();
}
于 2015-03-18T22:57:55.790 に答える
1

それがあなたのフォルダ構造であり、タイプだけではない場合、それは間違っています. パッケージ名は、パッケージ名を持つ 1 つのフォルダーではなく、フォルダー構造として表されます。

だからそうあるべきだsrc/test/java/com/some/path/tests/MyTests.java

また、テスト クラスが実際に Jar ファイルにあることを確認してください。Maven を使用して Jar を構築している場合、テスト クラスはデフォルトでは含まれません。

于 2013-05-09T15:44:05.590 に答える