[英]Run junit tests on eclipse filtered by Name
如何在enclipse上运行所有以“ IT”结尾的睾丸?
看到,默认情况下,我有以“ Test”或“ IT”结尾的测试类,我只想运行以“ IT”结尾的类。
最基本的解决方案是使用带有列出的必需测试类的Suite
。 例如:
@RunWith(Suite.class)
@SuiteClasses({ FirstIT.class, SecondIT.class })
public class TestSuite {
}
然后可以在Eclipse中直接运行该类作为测试
否则,可以使用诸如Reflections库之类的东西进行扫描:
@RunWith(ReflectionsScanner.class)
public class ReflectionsScanner extends Suite {
public ReflectionsScanner(Class<?> klass, RunnerBuilder builder)
throws InitializationError {
super(builder, klass, getAnnotatedClasses());
}
private static Class<?>[] getAnnotatedClasses() {
Reflections reflections = new Reflections("my.package",
new SubTypesScanner(false));
Set<String> allTypes = reflections.getAllTypes();
Class<?>[] matchingClasses = allTypes.stream()
.filter(name -> name.endsWith("IT")).map(name -> {
try {
return Class.forName(name);
} catch (Exception ex) {
throw new IllegalStateException(ex);
}
}).toArray(Class[]::new);
return matchingClasses;
}
}
reflections.getAllTypes()
有时可能会有点过多-还有可能提供更简单过滤器的getSubTypesOf()
和getTypesAnnotatedWith()
。 上面的链接对此进行了更详细的说明。
另一个简单的方法是对两种类型的测试使用多个源文件夹-例如,如果使用Maven,则使用src/test/java
和src/it/java
。 然后,Eclipse将允许您直接针对父文件夹运行方式/单元测试。
对于Maven,然后需要添加该测试源目录 。
我建议您看一下@IncludeClassNamePatterns批注。 它属于Junit 5,应在Eclipse Oxygene.1a +上运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.