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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (43)

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

默认情况下,我看到测试类以“Test”或“IT”结尾,我只想运行以“IT”结尾的测试类。

提问于
用户回答回答于

最基本的解决方案是使用a 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;
    }
}

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励