Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SpringJUnit4ClassRunner时跳过运行时的测试_Spring_Junit - Fatal编程技术网

使用SpringJUnit4ClassRunner时跳过运行时的测试

使用SpringJUnit4ClassRunner时跳过运行时的测试,spring,junit,Spring,Junit,在我的项目中,我有验收测试,这需要很长时间才能运行。当我向代码中添加新特性并编写新测试时,为了节省时间,我想跳过一些现有的测试用例。我使用的是Spring3,JUnit4使用的是SpringJUnit4ClassRunner。我的想法是为测试类创建一个注释(@Skip之类的)。我猜我必须修改运行程序以查找此注释,并根据系统属性确定测试时是否应包括测试类。我的问题是,这容易做到吗?或者我在某个地方丢失了一个可以帮助我的现有功能 谢谢。 Eric在JUnit4和JUnit5中使用注释类(或单元测试方

在我的项目中,我有验收测试,这需要很长时间才能运行。当我向代码中添加新特性并编写新测试时,为了节省时间,我想跳过一些现有的测试用例。我使用的是Spring3,JUnit4使用的是SpringJUnit4ClassRunner。我的想法是为测试类创建一个注释(@Skip之类的)。我猜我必须修改运行程序以查找此注释,并根据系统属性确定测试时是否应包括测试类。我的问题是,这容易做到吗?或者我在某个地方丢失了一个可以帮助我的现有功能

谢谢。 Eric

在JUnit4和JUnit5中使用注释类(或单元测试方法),以防止执行注释类或单元测试

忽略测试类:

@Ignore
public class MyTests {
    @Test
    public void test1() {
       assertTrue(true);
    }
}
忽略单个单元测试

public class MyTests {
    @Test
    public void test1() {
         assertTrue(true);
    }

    @Ignore("Takes too long...")
    @Test
    public void longRunningTest() {
        ....
    }

    @Test
    public void test2() {
         assertTrue(true);
    }
}

mvn安装-Dmaven.test.skip=true
所以你可以不用测试就可以构建你的项目

mvn-Dtest=TestApp1测试

您只需添加应用程序的名称,就可以对其进行测试。

我使用Spring配置文件来完成此操作。在测试中,在Spring环境中自动连线:

@Autowired
private Environment environment;
在默认情况下不希望运行的测试中,请检查活动配置文件,如果相关配置文件不活动,请立即返回:

@Test
public void whenSomeCondition_somethingHappensButReallySlowly() throws Exception{
    if (Arrays.stream(environment.getActiveProfiles()).noneMatch(name -> name.equalsIgnoreCase("acceptance"))) {
        return;
    }
    // Real body of your test goes here
}
现在,您可以使用以下工具运行日常测试:

> SPRING_PROFILES_ACTIVE=default,test gradlew test
> SPRING_PROFILES_ACTIVE=default,test,acceptance gradlew test
当您想要运行验收测试时,类似于:

> SPRING_PROFILES_ACTIVE=default,test gradlew test
> SPRING_PROFILES_ACTIVE=default,test,acceptance gradlew test
当然,这只是一个示例命令行,假设您使用Gradle wrapper来运行测试,并且您使用的活动概要文件集可能不同,但关键是您启用/禁用
验收
概要文件。您可以在IDE、CI测试启动器等中执行此操作

注意事项:

  • 您的测试运行程序将以运行状态报告测试,而不是忽略测试,这会产生误导
  • 您可能不希望在单个测试中硬编码配置文件名称,而是希望在一个中心位置定义它们。。。否则,很容易失去所有可用配置文件的跟踪

  • 我不想使用Ignore,因为它不是运行时设置。我试图避免这种情况。我觉得@Ignore是一个糟糕的注释,因为一个人很容易忘记删除它。你说的“运行时设置”是什么意思@Ignore由JUnit在运行时进行评估…与spock@Ignore相同这应该是一个可接受的答案,因为它绝对解决了这个问题,并且帮助很大。