2013-10-28 48 views
0

這裏是背景。如何在maven中運行JUnit測試如果測試不在測試目錄中,但是在主目錄中並且類名不含關鍵字。* Test。*

我正在使用一個正在使用ant build的項目。當我們用來創建一個新的類時,我們使用在與Ant支持的同一類中編寫junit測試。類名沒有'Test'命名約定。還有800多個Junit測試。

現在我們需要移動到Maven構建結構。問題是,maven只能運行junit,其中類名具有命名約定'Test'。

如何運行在src/main/java/*中的junit測試?

另外,有沒有一種方法,我可以拉所有具有'@Test'註解的方法?

如果您需要更多信息,請讓我知道。

+0

我會考慮通過應用'grep'和''your-vcs'mv'命令將具有'@ Test'註釋的文件移動到您的測試文件夾中。 –

+0

沒有其他解決方案:(我不能移動src/test/java中的文件,因爲它們是普通的java類 –

回答

0

我假設你正在使用ant,你有一個測試套件?如果是的話,最簡單的方法是改變配置來使用給定的測試套件:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.12.4</version> 
    <configuration> 
    <includes> 
     <include>AllTest.class</include> 
    </includes> 
    </configuration> 
    </plugin> 

不過,我不知道這是否會尋找src文件夾中太,所以​​你可能要移動的測試套件到測試目錄。

至於拉有@Test標註的所有方法(我假設沒有一套房?)你必須自己做,如果你不遵循安全可靠的測試類的命名規則。這是不是太硬,使自己的測試運行實現,通過在類路徑中所有的類或子文件夾中搜索並找到符合條件的,並傳遞給JUnit來運行所有類。

+0

我試過你的解決方案,但它沒有在src/main/java中運行測試dir –

+0

@ PankajDev如果你不能移動這個類,爲什麼不在測試目錄中創建一個新的測試套件來調用主測試套件呢? – dkatzel

+0

我並沒有真正明白測試套件在這裏的意思。你能舉個例子嗎? –

1

你必須改變Surefire plugin的配置,運行測試。我沒有測試它,但你可以嘗試這樣的配置:

<build> 
    <testSourceDirectory>src/main/java</testSourceDirectory> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-surefire-plugin</artifactId> 
     <version>2.16</version> 
     <configuration> 
     <includes> 
      <include>**/*.java</include> 
     </includes> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
+0

不,不起作用。 這是我在控制檯上看到的: [INFO] --- maven-surefire-plugin:2.16:測試(默認測試)@ MavenDemo --- [INFO]沒有要運行的測試。 我已經創建了一個樣本測試。 @Test public void testSysmteOut(){ org.junit.Assert.assertEquals(9,9); } 類別名稱:MakeCasesTest.java 其src/main/java/ –

+0

示例錯誤。testSourceDirectory節點必須是構建的孩子而不是配置。目前的例子是正確的,並已經過測試。 –

+1

雖然上述可能工作,但我強烈建議不要使用它。這不會解決問題,但只會使情況更糟。 – carlspring

2

僅僅因爲你用來做什麼的那樣使用Ant,並不能使它有權使用現在保持它。現在你已經搬到了Maven,你必須遵守它的做事方式並遵循其慣例。其中之一是讓您的生產代碼與您的測試分開。混合是沒有意義的,因爲你實際上已經無用地(爲你的代碼的客戶)亂扔你的代碼。雖然你可以繼續這樣做,並找到解決方法,但這不是高標準的選擇路線。

你真正需要做的下一步就是安排一些重構時間,執行以下任務:

  • 創建src/test/java(分別 - src/test/resources)。

  • 爲包含@Test註釋方法的每個類創建一個*Test類,並將它們置於src/test/java之下。

  • 將這些方法移到相應的新類中。

  • 把你所有的資源,僅用於測試由你src/test/resources目錄。

+0

「你必須遵守它的做事方式」 - *應該*遵守。 – Joe

+1

很好。重新表述。坦率地說,我覺得你「必須」。 – carlspring

0

如果你使用eclipse,你仍然可以執行它作爲Junit測試。實際上,如果你的「測試類」沒有放在測試文件夾中,這意味着你不打算在maven構建操作中將它們作爲「測試」運行。

相關問題