如何运行所有以" IT"结尾的睾丸?在圆柱上?
默认情况下,我看到测试类的结尾为"测试"或者" IT"结束我只想运行以#34; IT"结束的那些。
答案 0 :(得分:0)
最基本的解决方案是使用列出所需测试类的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,您需要添加test source directory。
答案 1 :(得分:0)
我建议您查看@IncludeClassNamePatterns注释。它属于Junit 5,它应该适用于Eclipse Oxygene.1a +。