我有这段代码,它使用main方法中的XML文件调用testNG
。我试图通过以下命令从命令行调用此类文件:
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();
}
}
答案 0 :(得分:1)
除非所有jar文件都在同一目录中,否则您需要指定类路径中每个jar的路径。您还需要确保您没有遗漏任何其他JAR文件。
java -cp "/path/to/project/My_automation.jar; /path/to/project/libs/testng-5.5.jar" ...
答案 1 :(得分:0)
从命令提示符运行时,请在类路径中提供testng.jar。
java -cp "My_Automation.jar;testng-5.5.jar" com.mycomp.test.sanity.InvokeTestNGTest
由于
答案 2 :(得分:0)
哪个jar包含org.testng.ITestListener类不在运行时类路径上。 Sergii Zagriichuk提到了一个testng.jar?
答案 3 :(得分:0)
意识到我已经将它导出为jar而不是可执行jar。这并没有拿起项目的依赖jar。感谢指点