Как и JUnit5 теги с Maven - PullRequest
       57

Как и JUnit5 теги с Maven

0 голосов
/ 25 октября 2019

Есть ли способ запустить только тесты с каждым из указанных тегов? Например, можем ли мы запускать только тесты с tag1 AND tag2?

Мы используем Maven 3.6.2 с версией 2.22.2 Surefire и JUnit 5.5.2 для запуска тестов со многими API приложенийконечные точки. Каждый тест имеет как минимум 3 тега, указывающих тип теста, приложение и тип метода. У некоторых есть больше.

В настоящее время мы запускаем наши тесты из командной строки, чтобы дать тестировщику контроль над каждым запуском:

mvn test -Dgroups=app1,fast

Проблема, с которой мы столкнулись, заключается в том, что все вышеперечисленное запустит всетесты помечены app1 ИЛИ fast. В результате выполняется множество десятков тестов. Цель тестировщика - запускать только «быстрые» тесты для «app1».

Хотя можно использовать excludedGroups, это не поможет тестеру до окончания пробега. Кроме того, мы добавляем тесты и теги каждый день, поэтому то, что сработало сегодня, может не сработать завтра.

Одна из наших целей - включить спецификацию тегов в командной строке и не требовать от тестера редактирования POM для запускадругая комбинация тестов. Мы хотели бы указать наши тестовые наборы из командной строки и не касаться POM между запусками. Из-за растущего списка тестовых комбинаций наше POM станет слишком большим для эффективного управления.

Возможно ли совместное использование тегов ANDing JUnit5 вместе с Surefire?

Ответы [ 2 ]

1 голос
/ 26 октября 2019

В Maven Surefire / Maven Failsafe вы можете определить группы , как вы уже упоминали, но вы можете определить его для JUnit Jupiter (он же JUnit 5) следующим образом:

mvn test -Dgroups="app1&fast"

или

mvn test -Dgroups="app1|fast"

для получения более подробной информации смотрите документацию.

Кстати: я рекомендую обновить до последних версий maven-surefire-plugin или maven-failsafe-plugin .

0 голосов
/ 25 октября 2019

То, как я это сделал, это настройка интерфейсов. Если есть подгруппы, я просто расширяю родительский интерфейс.

В вашем случае кажется, что у вас есть тег app1 и некоторые из этих тестов помечены быстро. Создайте интерфейс для app1 и другой для быстрого, который расширяет app1. В ваших тестах вы можете добавить @Category (app1Fast.class)

Когда вы вызываете mvn test -Dgroups = tests.groups.app1Fast, он будет запускать только быстрые теги. Если вы запустите mvn clean test -Dgroups = tests.groups.app1, он запустит все в app1.

Кроме того, вы можете сказать, что я создал пакет под названием groups для добавления своих интерфейсов.

Еще один, интерфейс будет пустым -

public interface app1 {}

public interface app1Fast extends app1{}

Похоже на васУ меня будет несколько приложений - app1, app2 и т. д.

public interface app2{}
public interface app2Fast extends app2{}

Возможно, другие способы, но это достаточно просто.

вызовите app1 для проверки всего в app1 или app1Fast только для быстрых тестов для app1. То же самое для app2.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...