2016-03-03 32 views
0

爲了生成一些測試文檔,我想獲得項目中的JUnit測試類的列表。假設,我們有以下項目結構。從Java中的源代碼上下文獲取JUnit測試類的列表

project/ 
    src/ 
    Main.java 
    test/ 
    XTest.java 
    YTest.java 

的Main.java文件應該能夠以提取所有的測試方法來讀取所有的測試類(即XTEST和YTest)。 像Package.getPackage()這樣的犯罪嫌疑人似乎不適用於測試類,但僅適用於實際的源代碼。

我該如何做到這一點?

+0

您是否考慮解析surefire(或任何測試執行程序)報告? – beresfordt

+0

@beresfordt我們已經這樣做來堅持測試結果。另外,我們還想記錄已通過自定義註釋擴展和記錄的實際測試代碼。現在的目標是從測試方法中提取這些註釋並將它們導出到Confluence。所以真正有必要使用反射來實際讀取測試類。 – str

+0

然後,您將需要調用Main以便測試類位於其類路徑中。將添加一個答案的細節 – beresfordt

回答

0

You for Main可以訪問類XTest和YTest,這些類在執行時需要在其類路徑中。

假設下面的後編譯目錄結構:

project/ 
    src/ 
    Main.java 
    test/ 
    XTest.java 
    YTest.java 
    target/ 
    classes/ 
     Main.class 
    test-classes/ 
     XTest.class 
     YTest.class 

Mainmain方法可以像這樣

java -classpath target/classes/:target/test-classes/ Main 

被執行,在該點它必須訪問該測試類反射性

然而,將主要進入/測試並明確告訴您的測試執行者可能更容易將其作爲其測試執行的一部分運行