2013-08-29 118 views
0

我正在運行的項目的結構假設運行時模塊(或插件,但是你稱之爲),就像C風格.so對象。目前它只能通過ClassLoader,我試圖用maven來測試它。我在我的項目的測試目錄中寫入了Test.javaTestModule.java文件。但maven試圖運行它們而不是Test.java。我如何指定測試文件?Maven測試模塊

P.S.除ClassLoader之外是否有加載模塊的系統?而新的外國模塊必須是項目取決於我的核心項目?

+0

Maven在src/main/test中搜索測試類,但是您可以自定義它。儘管如此,遵循標準的maven結構更簡單(參見Mortiz Petersen的回答) –

+0

我沒有太多時間來檢查它是否有效,並繼續我的項目,所以我會接受它,但稍後再檢查它。 – shved

回答

4

Maven - 與其他任何構建系統一樣 - 需要區分生產和測試代碼。推薦的變體是使用目錄結構這兩個類分開:

/src 
    /main 
    /java 
     -- your production classes go here 
    /test 
    /java 
     -- your test classes go here 

如果你的項目有不同的結構,你可以changepom.xml文件的默認行爲(不推薦):

<build> 
    <sourceDirectory>${basedir}/src/</sourceDirectory> 
    <testSourceDirectory>${basedir}/test</testSourceDirectory> 
    <outputDirectory>${basedir}/bin</outputDirectory> 
    <testOutputDirectory>${basedir}/test-bin</testOutputDirectory> 
    ... 
</build> 

如果你把這兩個產品和測試代碼放在同一個目錄(不好,不好),你可以告訴Maven include or exclude類正在運行測試:

<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.16</version> 
    <configuration> 
     <includes> 
     <include>Test.java</include> 
     </includes> 
    </configuration> 
    </plugin> 
</plugins> 

你仍然需要某種形式的命名約定來識別測試類(建議:爲MyClass類中的相應測試類應稱爲MyClassTest):

 <includes> 
     <include>**/*Test.java</include> 
     </includes> 
2

Maven使用maven-surefire-plugin運行測試。爲此,它執行目標test

includes屬性定義了什麼類將被視爲測試類。默認名稱模式是:

<includes> 
<include>**/Test*.java</include> 
<include>**/*Test.java</include> 
<include>**/*TestCase.java</include> 
</includes> 

所以,如果你不想在Maven的測試階段(也許是因爲你只是想手動運行該測試)要執行的測試不是改變includes財產或重命名類(例如CheckModule而不是TestModule)。

如果您的TestModule.java是應用程序代碼,而不是某種測試代碼,則不要將其放在測試目錄中。看看Maven default directory layout,如果可能的話使用它。

相關問題