Настройте classpath в затмении для JUnit 5 с Maven - PullRequest
0 голосов
/ 04 октября 2018

Eclipse (2018-09) поддерживает тесты JUnit 5, только если на пути к классам проекта присутствует движок JUnit 5.

Теперь у меня есть две возможности в моем проекте Maven:

  1. Добавьте его в проект через библиотеку JUnit затмения

    JUnitLib

    и добавьте только API к зависимостям

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <scope>test</scope>
    </dependency>
    
  2. Добавить движок и API к моему Maven pom

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

Если я сделаю первое, то каждый, кто использует затмение, должен сделатьэто сам.

Если я сделаю это позже, тогда я загрязняю свой (тестовый) путь к классам времени компиляции классами реализации, которые я (и пользователи других IDE) могли бы использовать вместо классов API.Также это может вызвать конфликты с IDE, для которых может потребоваться другая версия движка, чем та, что указана в cp.Во-первых, во IIRC были разделены API и движок.

К сожалению, в Maven нет области действия testRuntimeOnly (как в gradle).

TLDR : Как правильно настроить JUnit 5 для Eclipse для проекта Maven?

1 Ответ

0 голосов
/ 17 апреля 2019

Если я сделаю первое, то каждый, кто использует eclipse, должен сделать это сам.

Я предполагаю, что вы намеревались дать пользователю eclipse возможность выполнить тест, щелкнув правой кнопкой мыши наТестовый класс JUnit и выбор Запуск от имени> Тест JUnit .Я не знаю, является ли это правильным способом , но для этого нужно добавить дополнительную зависимость помимо JUnit Jupiter API / Engine , то есть JUnit Platform Launcher .

Например:

<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-api</artifactId>
  <version>5.4.2</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.junit.jupiter</groupId>
  <artifactId>junit-jupiter-engine</artifactId>
  <version>5.4.2</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.junit.platform</groupId>
  <artifactId>junit-platform-launcher</artifactId>
  <version>1.4.2</version>
  <scope>test</scope>
</dependency>

Не уверен, что это связано, но я использую maven-surefire-plugin Версия 2.22.1, которая выдает ClassNotFoundException , если JUnit Platform Launcher отсутствует.

...