2016-03-20 51 views
0

我試圖以編程方式使用虛擬XML運行TestNG的,如下所述: http://testng.org/doc/documentation-main.html#running-testng-programmatically運行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(); 

我得到下面的異常代碼時到達塊:

[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) 

我想不通爲什麼?有任何想法嗎?

+0

看來你是不正確實例XmlClass這裏的「新XmlClass(testResult.getTestClass() .getXmlClass()。的toString())」。嘗試新的XmlClass(testResult.getTestClass()) – RubioRic

+0

@RubioRic XmlClass構造函數接受String,而testResult.getTestClass()返回IClass。無論如何,即使使用.toString()也會導致相同的異常。 – Michael

+1

在IClass上調用getName而不是toString。 – RubioRic

回答

3

看來你沒有正確XmlClass實例在這一行

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

改用

new XmlClass(testResult.getTestClass().getName()) 
相關問題