运行 TestNG 以编程方式获取 "Cannot find class in classpath" 异常
Running TestNG programmatically, getting the "Cannot find class in classpath" exception
我正尝试使用虚拟 XML 以编程方式 运行 TestNG,如下所述:
http://testng.org/doc/documentation-main.html#running-testng-programmatically
这是我的代码:
TestListenerAdapter tla = new TestListenerAdapter();
TestNG tng = new TestNG();
tng.addListener(tla);
XmlSuite suite = new XmlSuite();
suite.setName("Retry Suite");
for (ITestResult testResult : failedTests){
XmlTest xmlTest = new XmlTest(suite);
//xmlTest.setSuite(suite);
xmlTest.setName(testResult.getTestName());
List<XmlClass> xmlClasses = new ArrayList<>();
xmlClasses.add(new XmlClass(testResult.getTestClass().getXmlClass().toString()));
xmlTest.setXmlClasses(xmlClasses);
xmlTest.getClasses().addAll(xmlClasses);
suite.addTest(xmlTest);
}
List<XmlSuite> suites = new ArrayList<>();
suites.add(suite);
tng.setXmlSuites(suites);
tng.run();
代码到达块时出现以下异常:
[ERROR] org.testng.TestNGException:
[ERROR] Cannot find class in classpath: [XmlClass class=tests.system.browserTests.BrowserTests]
[ERROR] at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
[ERROR] at org.testng.xml.XmlClass.init(XmlClass.java:73)
[ERROR] at org.testng.xml.XmlClass.init(XmlClass.java:63)
[ERROR] at org.testng.xml.XmlClass.<init>(XmlClass.java:39)
[ERROR] at tests.utils.autoReport.postHandler.TestNGLiseteners.retrySuiteVirtXml(TestNGLiseteners.java:226)
[ERROR] at tests.utils.autoReport.postHandler.TestNGLiseteners.onExecutionFinish(TestNGLiseteners.java:204)
我不明白为什么?有什么想法吗?
您似乎没有在这一行中正确实例化 XmlClass
new XmlClass(testResult.getTestClass().getXmlClass().toString())
改用
new XmlClass(testResult.getTestClass().getName())
确保您的 .project
文件至少应包含:
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
同时检查输出目录中编译的类的可用性默认情况下/bin
PS。对于标准 java 项目
我正尝试使用虚拟 XML 以编程方式 运行 TestNG,如下所述: http://testng.org/doc/documentation-main.html#running-testng-programmatically
这是我的代码:
TestListenerAdapter tla = new TestListenerAdapter();
TestNG tng = new TestNG();
tng.addListener(tla);
XmlSuite suite = new XmlSuite();
suite.setName("Retry Suite");
for (ITestResult testResult : failedTests){
XmlTest xmlTest = new XmlTest(suite);
//xmlTest.setSuite(suite);
xmlTest.setName(testResult.getTestName());
List<XmlClass> xmlClasses = new ArrayList<>();
xmlClasses.add(new XmlClass(testResult.getTestClass().getXmlClass().toString()));
xmlTest.setXmlClasses(xmlClasses);
xmlTest.getClasses().addAll(xmlClasses);
suite.addTest(xmlTest);
}
List<XmlSuite> suites = new ArrayList<>();
suites.add(suite);
tng.setXmlSuites(suites);
tng.run();
代码到达块时出现以下异常:
[ERROR] org.testng.TestNGException:
[ERROR] Cannot find class in classpath: [XmlClass class=tests.system.browserTests.BrowserTests]
[ERROR] at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
[ERROR] at org.testng.xml.XmlClass.init(XmlClass.java:73)
[ERROR] at org.testng.xml.XmlClass.init(XmlClass.java:63)
[ERROR] at org.testng.xml.XmlClass.<init>(XmlClass.java:39)
[ERROR] at tests.utils.autoReport.postHandler.TestNGLiseteners.retrySuiteVirtXml(TestNGLiseteners.java:226)
[ERROR] at tests.utils.autoReport.postHandler.TestNGLiseteners.onExecutionFinish(TestNGLiseteners.java:204)
我不明白为什么?有什么想法吗?
您似乎没有在这一行中正确实例化 XmlClass
new XmlClass(testResult.getTestClass().getXmlClass().toString())
改用
new XmlClass(testResult.getTestClass().getName())
确保您的 .project
文件至少应包含:
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
同时检查输出目录中编译的类的可用性默认情况下/bin
PS。对于标准 java 项目