Запуск тестов JUnit 4 (в среде исполнения Vintage) с помощью JUnit 5 @Tag - PullRequest
0 голосов
/ 26 мая 2020

В настоящее время, насколько мне известно, Cucumber поддерживает запуск на JUnit 5 с помощью старинного механизма выполнения.

Предположим, у меня есть следующий исполнитель тестов:

@RunWith(Cucumber.class)
@CucumberOptions(plugin = { "pretty", "html:target/cucumber" },
                 features={ "src/test/resources" },
                 strict = true)
@Tag("ACCEPTANCE_TEST") 
public class TestRunner { }

запустите это с выражением тега, определенным как «ACCEPTANCE_TEST» в JUnit 5, он не будет взят и запущен.

Однако, если я запустил его с выражением, определенным как NOT (что было бы верно для тестовый класс), например, "! UNIT_TEST", тогда он будет взят и запущен.

Как я могу смешать тег JUnit 5 с тестовым исполнителем JUnit 4 (например, тот, что указан выше), чтобы он работал для положительное совпадение выражения тега?

1 Ответ

1 голос
/ 27 мая 2020

TLDR

Вы не можете.

Все еще TLDR

Вы не можете, по крайней мере, не без повторной реализации большей части того, что делает JUnit4 runner от Cucumber.

Long История

Чтобы понять, почему, вы должны asp разграничить некоторые термины:

  • JUnit 4: один модуль (файл jar), содержащий API тестовой записи, исполнитель тестов, API для запуска тестов и как минимум два различных механизма для его расширения (правила и бегуны).
  • Cucumber JUnit4 runner: способ интеграции Cucumber с JUnit 4. Активируется через @RunWith(Cucumber.class)
  • JUnit 5: платформа для запуска различных тестовых движков, которая состоит из нескольких модулей и предоставляет API для использования IDE и инструментами сборки, а также SPI для подключаемых тестовых движков.
  • Vintage: тест движок для использования JUnit 4 на платформе JUnit 5
  • Jupiter: новый механизм тестирования, который развивается синхронно c с платформой JUnit 5 и поддерживается той же командой.

Вот в чем дело: че Аннотация e @Tag является функцией Юпитера и не может работать с бегуном JUnit 4 от Cucumber. Способ JUnit 5 использовать Cucumber - это тестовый движок Cucumber: https://github.com/cucumber/cucumber-jvm/tree/master/junit-platform-engine. AFAIU имеет свой собственный механизм тегов и не использует @Tag, потому что разные тестовые движки работают бок о бок, но не разделяют функциональность.

...