在按名称过滤的eclipse上运行junit测试

时间:2018-06-07 18:26:19

标签: java eclipse testing junit

如何运行所有以" IT"结尾的睾丸?在圆柱上?

默认情况下,我看到测试类的结尾为"测试"或者" IT"结束我只想运行以#34; IT"结束的那些。

2 个答案:

答案 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/javasrc/it/java。然后,Eclipse将让您直接针对父文件夹运行/单元测试。

对于Maven,您需要添加test source directory

答案 1 :(得分:0)

我建议您查看@IncludeClassNamePatterns注释。它属于Junit 5,它应该适用于Eclipse Oxygene.1a +。