Intellij: как запустить все методы main() в папке?

#unit-testing #intellij-idea #main-method

#модульное тестирование #intellij-идея #main-метод

Вопрос:

В IntelliJ есть функция, которая запускает все модульные тесты в папке. Есть ли какая-либо возможность запустить все методы main () таким же образом?

Ответ №1:

Насколько мне известно, нет.

Обходной путь с классом-оболочкой:

Создайте класс с 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: Фильтрация для модификатора static и public также была бы хорошей идеей.