2016-12-27 34 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