#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
также была бы хорошей идеей.