JUnit 4 @Test аннотация не учитывается при фильтрации по тегам - PullRequest
0 голосов
/ 03 января 2019

Когда я пытаюсь запустить тесты с фильтрацией тегов, выполняются только те, которые отмечены @Test из JUnit 5, но не помечены @Test из JUnit 4.

Дело в том, что если выражение фильтрации«! slow», на самом деле он выполняет тесты без тега «slow» независимо от того, какая аннотация @Test используется.Но когда я фильтрую с выражением «медленно», тесты с этим тегом не будут выполняться, если у них будет @Test из JUnit 4.

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

Я импортировал это в мой pom

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-engine</artifactId>
  <version>5.1.0</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.junit.platform</groupId>
  <artifactId>junit-platform-launcher</artifactId>
  <version>1.3.2</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.junit.vintage</groupId>
  <artifactId>junit-vintage-engine</artifactId>
  <version>5.1.0</version>
  <scope>test</scope>
</dependency>

И тест, который я пытаюсь запустить, это

import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Tag;
public class Test {
  @org.junit.Test
  @Tag("slow")
  public void test() {
    assertTrue(true);
  }
}

1 Ответ

0 голосов
/ 03 января 2019

Нельзя смешивать аннотации JUnit 4 и JUnit 5 в одном тесте. Таким образом, ваш подход не будет работать . Решением может быть миграция этих помеченных тестов в JUnit 5.

Справочная информация: Платформа JUnit использует различные механизмы тестирования для обнаружения и выполнения тестов. Движок junit-vintage-engine может обрабатывать тесты, написанные с использованием API JUnit 4, где методы тестирования помечены @org.junit.Test. Движок junit-jupiter-engine может обрабатывать тесты, написанные с использованием JUnit Jupiter API (обычно известного как JUnit 5), где методы тестирования помечены @org.junit.jupiter.api.Test. У каждого двигателя есть только знания о своих методах испытаний. Движок junit-vintage-engine не работает с аннотациями JUnit Jupiter, поэтому эти аннотации просто игнорируются.

...