繁体   English   中英

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

[英]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/javasrc/it/java 然后,Eclipse将允许您直接针对父文件夹运行方式/单元测试。

对于Maven,然后需要添加该测试源目录

我建议您看一下@IncludeClassNamePatterns批注。 它属于Junit 5,应在Eclipse Oxygene.1a +上运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM