2012-01-30 110 views
8

我想創建由JUnit/TestNG PROGRAMMATICALL生成的測試報告。所以,這就排除了ANT。我主要關心的是生成由Junit在執行測試用例時創建的XML文件。我讀過RunListener可以幫助我實現這一點,但是我無法弄清楚如何?我使用Selenium創建我的測試用例。生成由JUnit報告使用的XML文件

如何生成由JUnit創建的XML文件?

+0

使用JUnit的XML [格式](HTTP://幫助。 catchsoftware.com/display/ET/JUnit+Format) – Manu 2015-06-24 10:44:57

回答

9

JUnit不生成XML報告。 JUnit沒有標準的XML輸出格式。

其他工具生成XML,比如Ant/Maven。所以你需要做的第一件事就是決定你想要哪種形式的XML文件,就像在你創建文件後你想要做什麼一樣。

而且,實際上,您的編程限制並不排除ANT。您可以以編程方式調用ant(請參閱Invoke ant from java, then return to java after ant termination)。這可能是生成螞蟻兼容文件的最簡單方法。

如果您希望創建自己的XML文件,那麼您可以創建一個擴展爲RunListener的類,然後通過調用JUnitCore#run()或類似方法運行測試。

public void main(String... args) { 
    JUnitCore core= new JUnitCore(); 
    core.addListener(new RingingListener()); 
    core.run(MyTestClass.class); 
} 

您的RunListener只會發出相應的XML。這很容易理解:重寫方法testRunStarted()等並寫出XML。有關它如何工作的示例,請參閱TextListener,它可以做同樣的事情,但可以用於文本。

+0

TextListener paga已被刪除。你能分享另一個鏈接嗎? – anon 2014-01-10 07:36:47

+0

我已更新鏈接。 – 2014-01-10 09:32:36

0

你問幾乎相同 here 如果你看一下TestNG的文檔,你可以使用:

的org.testng.IReporter接口,它只有一個方法: 公共無效generateReport(名單套房, String outputDirectory) 當所有套件都運行並且您可以檢查其參數以訪問剛剛完成的運行中的所有信息時,TestNG將調用此方法。

4

XML文件的螞蟻junit的產生,我們可以做到這一點的程序,代碼看起來像未來:

Project project = new Project(); 
JUnitTask task = new JUnitTask(); 
project.setProperty("java.io.tmpdir",String); //set temporary directory 
task.setProject(project); 
JUnitTask.SummaryAttribute sa = new JUnitTask.SummaryAttribute(); 
sa.setValue("withOutAndErr"); 
task.setFork(false); 
task.setPrintsummary(sa); 
FormatterElement formater = new FormatterElement();   
FormatterElement.TypeAttribute type = new FormatterElement.TypeAttribute(); 
type.setValue("xml"); 
formater.setType(type); 
task.addFormatter(formater); 
JUnitTest test = new JUnitTest(String);// set Test.class.getname()   
test.setTodir(File); // set Location for your report 
task.addTest(test);   
task.execute(); 
+1

哪些jar文件可以使用?你可以分享嗎? – anon 2014-01-10 07:31:42