Запускать модульные тесты в IntelliJ IDEA из нескольких модулей вместе

89

Как запустить все тесты сразу из двух или более модулей IDEA?

Я использую много модулей, и важно часто запускать все модульные тесты, и когда я выбираю более одной папки для запуска, в контекстном меню больше нет опции «запустить».

Войтек Эрбетовски
источник

Ответы:

115

Лучший способ: (редактировать через 3 года)

Есть даже лучший способ добиться этого.

  1. Выберите меню «Выполнить» → «Редактировать конфигурации ...». Щелкните зеленый плюс в левом верхнем углу и выберите JUnit.

  2. Выберите «Тип теста» на «Шаблон» и введите это регулярное выражение в точности так, как вы его видите: ^(?!.*IT$).*$(оно начинается с каретки ^и заканчивается знаком доллара $). Это регулярное выражение говорит: все тесты, которые не заканчиваются на ИТ в их имени .

  3. Выберите «Искать тесты» на «Во всем проекте». Рабочий каталог должен быть установлен как рабочий каталог верхнего модуля (он должен быть установлен по умолчанию).

  4. Введите имя для вашего теста, например «Все модульные тесты». Я также предпочитаю отмечать опцию «Поделиться», чтобы эта конфигурация не исчезла позже. Нажмите Применить и ОК.

Вы можете поэкспериментировать с этим регулярным выражением в соответствии со своими потребностями.

Оригинальный ответ:

Это выполнимо, хотя и неудобно.

  1. Выберите первый модуль, щелкните правой кнопкой мыши test/javaкаталог и «Выполнить все тесты». Создает тестовую конфигурацию.
  2. Выберите «Редактировать конфигурации» и отметьте «Поделиться» на вновь созданной конфигурации, чтобы она была сохранена.
  3. Выберите для него второй модуль «Выполнить все тесты» и также отметьте «Поделиться» для этой конфигурации.
  4. В разделе «Перед запуском» нажмите «+» и выберите «Запустить другую конфигурацию», а затем выберите конфигурацию первого модуля.

Таким образом, вы запускаете конфигурации в последовательности, и каждая конфигурация получает новую вкладку. Тем не менее, лучше, чем ничего.

Томаш Калкосинский
источник
Благодаря! Безусловно, самый чистый способ. Интересно, есть ли лучший способ достичь этого через 3 года :)
CoderSpinoza
Благодаря! Вы сэкономили мое время, и это, безусловно, все еще самый умный способ, который я могу найти, чтобы разрешить как создание отчетов о множественном охвате, так и проблему единого обработчика заявок одним выстрелом .
Фей
Я только что отредактировал свой anser с лучшим решением @CoderSpinoza
Томаш Калкосинский
11
Обновленная версия не так хороша , если ваши тестовые примеры используют ресурсы, специфичные для модуля, во время выполнения - я все равно предпочитаю исходное решение.
Fei
Как мне заставить эту конфигурацию уважать мои зависимости Gradle? Теперь он не работает из-за отсутствия классов в Guava. При запуске тестов одного модуля все работает нормально.
Йорн
22

Вам необходимо создать «Конфигурацию запуска»:

  1. Перейдите в раскрывающийся список вверху справа от кнопки «Сделать» и нажмите на нее.
  2. Выберите «Изменить конфигурации».
  3. Теперь нажмите кнопку «+», чтобы добавить новую конфигурацию запуска, и выберите JUnit.
  4. Затем при настройке «Конфигурация запуска» вы найдете раскрывающийся список «Тип теста», выберите «Все классы в каталоге».
  5. Выберите каталог, который вы хотите использовать в качестве корневого, вы можете выбрать каталог верхнего уровня для вашего проекта или любой из каталогов для ваших модулей.
  6. Выберите модуль IntelliJ, откуда выбирается путь к классам (это может быть проект верхнего уровня, если у него есть путь к классам)
Алонсо Домингес
источник
Спасибо за совет, но это не решает проблемы. Идеальным способом было бы выбрать несколько каталогов, а не только один. Первичное решение - использовать шаблоны, но все же можно создавать шаблоны только для пакета, а не для каталогов ...
Войтек Эрбетовски
15
В «Test Kind» выберите «Все в пакете», а затем установите флажок «Во всем проекте». Это запустит тесты во всех модулях.
Мартин Оделиус
5
Я хотел бы, чтобы каждый модуль запускался со своим собственным каталогом модулей в качестве рабочего каталога - это кажется невозможным, похоже, что для всего этого используется один каталог модулей.
bacar
@MartinOdhelius, это самое чистое решение на данный момент
Hemil
10

Выберите все модули, щелкните их правой кнопкой мыши и выберите запуск всех тестов. Это создаст конфигурацию под названием «Весь проект». которую вы можете запустить снова в любое время.

Я нашел это лучше, чем принятый ответ, потому что он запускает модульные тесты отдельно для каждого модуля. Если в ваших тестовых примерах используются ресурсы, специфичные для модуля, во время выполнения, то лучший способ принятого ответа не сработает.

Выбрать все модули

Выбрать все модули

Щелкните правой кнопкой мыши и выберите запуск всех тестов.

Щелкните правой кнопкой мыши и выберите запуск всех тестов.

Получите новую конфигурацию запуска

Получите новую конфигурацию запуска

Дэйв Томас
источник
На первом этапе достаточно выбрать более одного модуля.
user7610 08
2
На мой взгляд, это должен быть принятый ответ. Единственное, что у меня есть, - это использование термина «самый простой». К сожалению, с Intellij нет ничего простого в настройке конфигурации запуска. Есть много способов выполнять простые задачи с конфигурациями, и обычно только один, если он работает. Таким образом, ваша задача часто состоит в том, чтобы перебрать все различные варианты в поисках того, который работает. Совсем непросто.
Дэвид Сакштейн
Это запускает все тесты в проекте (весь проект), хотя я выбираю небольшую часть модулей. Я не этого хочу. В моем случае все модули, которые я хочу запустить, будут иметь общий пакет, поэтому я могу отредактировать полученную конфигурацию «Весь проект» и добавить пакет, который фильтрует запуск теста только для подмножества модулей.
Альберт Вила Кальво
5

Для меня оба решения не работали или не работали, как ожидалось.

У меня есть 3 модуля. Мои зависимости модулей выглядят так

Презентация -> Домен -> Данные

Я просто хотел провести все тесты вместе. Итак, я придумал подход «Через зависимости модуля»

Мои настройки выглядят так:

введите описание изображения здесь

Лангустен Густель
источник
2

Это сработало для меня в проекте с несколькими модулями.

Создайте новую конфигурацию запуска / отладки JUnit. Тип теста: «Все в пакете» Поиск тестов: «Весь проект»

Вам также нужно будет указать рабочий каталог.

Дэн
источник
Это то, чем я в конечном итоге занимался.
miva2
1

Другой не столь очевидный случай - когда покрытие кода требуется более чем в одном проекте. Наивным решением было бы выбрать несколько проектов и запустить в них сразу все модульные тесты. Как выясняется, модульные тесты могут завершиться неудачно, если путь к классам изменится и IntelliJ имеет ровно одну запись пути к классам для каждой конфигурации запуска. В этом случае действительно достаточно последовательного выполнения модульных тестов над проектами. Это потому, что в конце каждого запуска IntelliJ (2017.2.5 Community Edition) спрашивает, должно ли собранное покрытие заменить или должно быть добавлено к ранее собранной статистике покрытия.

Габор
источник