Java 以编程方式运行TestNG,获取;在类路径中找不到类;例外

Java 以编程方式运行TestNG,获取;在类路径中找不到类;例外,java,classpath,testng,Java,Classpath,Testng,我正在尝试使用虚拟XML以编程方式运行TestNG,如下所述: 这是我的密码: TestListenerAdapter tla = new TestListenerAdapter(); TestNG tng = new TestNG(); tng.addListener(tla); XmlSuite suite = new XmlSuite(); suite.setName("Retry Suite");

我正在尝试使用虚拟XML以编程方式运行TestNG,如下所述:

这是我的密码:

        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();
TestListenerAdapter tla=newtestlisteneradapter();
TestNG tng=新的TestNG();
tng.addListener(tla);
XmlSuite=newxmlsuite();
setName(“重试套件”);
对于(ITestResult测试结果:失败测试){
XmlTest XmlTest=新的XmlTest(套件);
//xmlTest.setSuite(套件);
setName(testResult.getTestName());
List xmlClasses=new ArrayList();
add(新的XmlClass(testResult.getTestClass().getXmlClass().toString());
setXmlClasses(xmlClasses);
xmlTest.getClasses().addAll(xmlClasses);
suite.addTest(xmlTest);
}
列表套件=新的ArrayList();
套房。添加(套房);
tng.setXmlSuites(套房);
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)
[ERROR]org.testng.TestNGException:
[错误]在类路径[XmlClass class=tests.system.browserTests.browserTests]中找不到类
[错误]位于org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
[错误]位于org.testng.xml.XmlClass.init(XmlClass.java:73)
[错误]位于org.testng.xml.XmlClass.init(XmlClass.java:63)
[错误]位于org.testng.xml.XmlClass。(XmlClass.java:39)
tests.utils.autoReport.postHandler.TestNGLiseteners.retrySuiteVirtXml(TestNGLiseteners.java:226)处的[ERROR]
tests.utils.autoReport.postHandler.TestNGLiseteners.onExecutionFinish(TestNGLiseteners.java:204)处的[ERROR]

我不明白为什么?有什么想法吗?

这一行似乎没有正确实例化XmlClass

new XmlClass(testResult.getTestClass().getXmlClass().toString())
改用

new XmlClass(testResult.getTestClass().getName())

在这一行中,您似乎没有正确实例化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>

org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature
默认情况下,还要检查输出目录中编译类的可用性
/bin


另外,对于标准java项目

请确保您的
.project
文件至少应包含以下内容:

</projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>

org.eclipse.jdt.core.javabuilder
org.eclipse.jdt.core.javanature
默认情况下,还要检查输出目录中编译类的可用性
/bin


另外,对于标准java项目

来说,您似乎没有在这里正确实例化XmlClass“new XmlClass(testResult.getTestClass().getXmlClass().toString())”。尝试新建XmlClass(testResult.getTestClass())@RubioRic XmlClass构造函数接受字符串,而testResult.getTestClass()返回IClass。无论如何,即使使用.toString()也会导致相同的异常。在IClass上调用getName而不是toString。@RubioRic cool!谢谢。您似乎没有在这里正确实例化XmlClass“new XmlClass(testResult.getTestClass().getXmlClass().toString())”。尝试新建XmlClass(testResult.getTestClass())@RubioRic XmlClass构造函数接受字符串,而testResult.getTestClass()返回IClass。无论如何,即使使用.toString()也会导致相同的异常。在IClass上调用getName而不是toString。@RubioRic cool!谢谢