0

在 IntelliJ 中有一个功能可以在一个文件夹中运行所有单元测试。是否有可能以相同的方式运行所有 main() 方法?

4

1 回答 1

3

不是我知道的。

包装类的解决方法:

使用方法创建一个类main并调用main该方法中的每个方法。

如果这些带有main方法的类发生了很大变化,您可以使用这个反射库和以下代码来扫描带有main方法的类:

 Reflections reflections = new Reflections("your.package.with.main.classes");

 Set<Class<? extends Object>> allClasses = 
     reflections.getSubTypesOf(Object.class);

allClasses集合包含该包中的所有类。

以下代码将过滤具有main方法的类:

Set<Class> mainClasses = allClasses.stream()
  .filter(clazz -> 
    Arrays.stream(clazz.getMethods())
     .anyMatch(method -> 
        method.getName().equals("main")))
   .collect(Collectors.toSet());

调用该main方法应该不再是问题。

PS:过滤staticpublic修饰符也是一个好主意。

于 2019-04-24T15:04:21.613 回答