2016-03-20 5 views
0

なって、プログラムでTestNGの実行: http://testng.org/doc/documentation-main.html#running-testng-programmatically、ここで説明したように、私は、仮想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(); 

は、私は、コードブロックに到達したときに次の例外を取得:

[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(testResult.getTestClassを(XmlClassあなたが正しくインスタンス化されていないようです) .getXmlClass()。toString())」を選択します。新しいXmlClassを試してください(testResult.getTestClass()) – RubioRic

+0

@RubioRic XmlClassコンストラクタはStringを受け取りますが、testResult.getTestClass()はIClassを返します。とにかく、.toString()を使用しても、同じ例外が発生します。 – Michael

+1

toStringの代わりにIClassのgetNameを呼び出します。 – RubioRic

答えて

3

使用

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

あなたはこのラインで正しくXmlClassをインスタンス化されていないように見える代わりに

new XmlClass(testResult.getTestClass().getName()) 
関連する問題