2

我有这段代码,它testNG使用 main 方法中的 XML 文件调用。我正在尝试通过以下方式从命令行调用此类文件:

java -cp My_Automation.jar com.mycomp.test.sanity.InvokeTestNGTest

但是,这会失败并显示以下消息:

Exception in thread "main" java.lang.NoClassDefFoundError: org/testng/ITestListener

我试过通过 Eclipse 运行它,它工作得很好,但是当从命令行界面调用时它失败了。所有测试 JAR 都放在类路径中。我不明白这种差异。

这是我的代码:

package com.mycomp.test.sanity;

import java.util.ArrayList;
import java.util.List;
import org.testng.TestNG;
import org.testng.TestListenerAdapter;


public class InvokeTestNGTest {
    public static void main(String[] args) {


        List<String> xmlFileList = new ArrayList();
        xmlFileList.add("ILIO_testNG.xml");
        TestListenerAdapter tla = new TestListenerAdapter();
        TestNG testng = new TestNG();

        testng.setTestSuites(xmlFileList);
        testng.addListener(tla);
        testng.run();

        }

}
4

4 回答 4

1

除非您的所有 jar 文件都在同一个目录中,否则您需要在类路径中指定每个 jar 的路径。您还需要确保没有丢失任何其他 JAR 文件。

java -cp "/path/to/project/My_automation.jar; /path/to/project/libs/testng-5.5.jar" ... 
于 2013-08-01T18:45:23.887 回答
0

哪个 jar 包含 org.testng.ITestListener 类不在您的运行时类路径中。Sergii Zagriichuk 提到了一个 testng.jar?

于 2013-08-01T18:50:22.023 回答
0

从命令提示符运行时,请在类路径中提供 testng.jar。

java -cp "My_Automation.jar;testng-5.5.jar" com.mycomp.test.sanity.InvokeTestNGTest

谢谢

于 2013-08-01T17:30:26.027 回答
0

意识到我已经将它导出为一个 jar 而不是可执行的 jar。这并没有为项目获取依赖项 jar。谢谢指点

于 2013-08-06T00:57:18.437 回答