2016-12-27 63 views
1

我正在組織一些測試到套件中,這很好,但我需要忽略作爲套件一部分的測試,以便我的構建不會自動運行它們。JUnit - 當套件的一部分忽略測試

我可以通過從構建過程中排除它們來達到目的,但希望瞭解JUnit是否支持本機構建。

什麼是最簡單的方法來實現呢?

編輯: 爲了在Maven構建中實現這一目標,我可以對測試進行分類(https://stackoverflow.com/a/14133020/819606)並排除整個類別(https://stackoverflow.com/a/18678108/819606)。

+0

我不知道一個簡單的內置的方式來實現這一目標。 – GhostCat

回答

0

Junit4 - 您可以嘗試使用

@Ignore 
public class IgnoreMe { 
      @Test public void test1() { ... } 
      @Test public void test2() { ... } 
} 

轉化爲類似 -

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@SuiteClasses({IgnoreMe.class, AnotherIgnored.class}) 
@Ignore 
public class MyTestSuiteClass { 
.... 
// include BeforeClass, AfterClass etc here 
} 

來源 - Ignore in Junit4


Junit5 - 您可以嘗試類似的喜歡的東西 -

import org.junit.jupiter.api.Disabled; 
import org.junit.jupiter.api.Test; 

@Disabled 
class DisabledClassDemo { 
    @Test 
    void testWillBeSkipped() { 
    } 
} 

來源 - 與套件實現Disabling Tests in Junit5

沿Junit5作爲

如果您有多個測試類,你可以創建一個測試套件在以下示例中可以看到 。

import org.junit.platform.runner.JUnitPlatform; 
import org.junit.platform.runner.SelectPackages; 
import org.junit.runner.RunWith; 

@RunWith(JUnitPlatform.class) 
@SelectPackages("example") 
@Disabled 
public class JUnit4SuiteDemo { 
} 

的JUnit4SuiteDemo會發現和運行中的示例 包及其子包的所有測試。默認情況下,它只包含測試 其名稱與模式^。* Tests?$匹配的類。

其中@SelectPackages指定包的名稱以通過@RunWith(JUnitPlatform.class)運行一個測試套件時選擇,所以你可以指定那些要執行或者那些你不想執行,並將其標記上述禁用。

進一步讀取 - @Select in Junit5Running a Test Suite in Junit5