2009-10-20 92 views
10

我目前正在研究一個在所有模塊中廣泛使用JUnit4的項目。我們使用Maven2來構建項目和Hudson以實現持續集成。該項目是在Java 1.5下構建和運行的。是否可以忽略某些單元測試?

我們最近添加了大量的單元測試,這些單元測試有時需要,但不希望在構建過程中運行(但在同一項目中進行其他單元測試)。

我想知道是否存在某種可以應用於測試的註釋,或者可以對Maven進行的某些配置,這些配置會忽略位於特定包或特定測試類下的構建時間?

將這些特定的測試放在一個普通的類中可能會有其他選擇,但這並不理想。

感謝您的建議

回答

15

可以配置maven-surefire-plugin

例如:

<project> 
<build> 
<plugins> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.4.2</version> 
    <configuration> 
     <excludes> 
     <exclude>**/TestCircle.java</exclude> 
     <exclude>**/TestSquare.java</exclude> 
     </excludes> 
    </configuration> 
    </plugin> 
</plugins> 

編輯:
另一種解決方案是定義profiles其中所有測試將被例如運行由哈德森。在開發模式下,您可以使用所有測試的子集來加速開發(或者所有測試可能都在默認配置文件中,選擇dev配置文件中的測試 - 因此您需要使用-PprofileName屬性運行maven)。這個例子更適合採用loger運行的集成測試。

+0

配置文件+1(關於集成測試,我寧願將它們放在'src/test/it'中,並在'integration-test'階段運行它們) – 2009-10-20 09:51:45

+0

非常感謝,我會仔細研究一下兩種解決方案並決定最適合哪種。 – 2009-10-20 10:11:24

+0

@詹姆斯。注意配置文件的解決方案也需要安全的插件配置。 @Pascal。是的,你是對的,我和你一樣。但有時寫一個*純粹*單元測試是很困難的,並且一直是一個測試多一點的誘惑,仍然稱之爲*單元測試* :) – cetnar 2009-10-20 10:22:44

3

我從來沒有嘗試過,但你可以把額外的測試,在不同的源文件夾,並配置構建腳本根據您的構建目標包含或排除呢?

+0

有趣的,而不是一個壞主意。如果沒有其他事情出現,我會研究它。歡呼 – 2009-10-20 08:40:38

1

的JUnit 4.7,我相信支持「規則」對這種事情(預4.7,我認爲你可以有誰還會檢查一個環境變量中使用自定義的運動員)。

或者您可以查看構建系統的包含/排除標籤。

8

有一個「忽略」註釋,但它是手動工作添加它們,不知道是否有幫助。
它可用於測試方法或全班

@Ignore("not ready yet") @Test public void testSomething() {... 

@Ignore public class SomeTest { 
    @Test public void testSomething() {... 
} 

[]