在我的项目中,我有验收测试需要很长时间才能运行。当我向代码添加新功能并编写新测试时,我想暂时跳过一些现有的测试用例。我使用SpringJUnit4ClassRunner使用Spring 3和junit 4。我的想法是为测试类创建一个注释(@Skip或其他东西)。我猜我必须修改运行器以查找此注释,并从系统属性确定是否应在测试时包含测试类。我的问题是,这很容易吗?或者我错过了某个可以帮助我的现有功能?
感谢。 埃里克
答案 0 :(得分:9)
使用JUnit的@Ignore注释注释您的类(或单元测试方法),以防止执行带注释的类或单元测试。
忽略测试类:
@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);
}
}
答案 1 :(得分:1)
mvn install -Dmaven.test.skip = true
所以你可以在没有测试的情况下构建你的项目,
mvn -Dtest = TestApp1测试
您只需添加应用程序的名称即可进行测试。
答案 2 :(得分:0)
我使用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
当然,这只是一个示例命令行,假设您使用Gradle包装器来运行测试,并且您使用的活动配置文件集可能不同,但关键是您启用/禁用acceptance
配置文件。您可以在IDE,CI测试启动器等中执行此操作...
注意事项: