仅当项目的类路径中存在JUnit 5引擎时,Eclipse(2018-09)才支持JUnit 5测试。
现在我的Maven项目中有两种可能性:
通过Eclipse JUnit库将其添加到项目中
并仅将API添加到依赖项中
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<scope>test</scope>
</dependency>
将引擎和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>
如果我做前者,那么每个使用Eclipse的人都必须自己做。
如果稍后再做,则会使用实现类污染(测试)编译时类路径,而我(以及其他IDE的用户)可能会使用这些实现类路径来代替API类。同样,这可能会导致与IDE发生冲突,可能需要与cp上版本不同的引擎版本。 IIRC就是将API和引擎一分为二的全部原因。
不幸的是,Maven中没有testRuntimeOnly
范围(就像gradle中那样)。
TLDR :哪种方法是为Maven项目的Eclipse配置JUnit 5的正确方法?
答案 0 :(得分:1)
如果我做前者,那么每个使用Eclipse的人都必须自己做。
我假设您打算通过右键单击JUnit测试类并选择 Run as> JUnit Test ,让Eclipse用户有机会执行测试。我不知道这是否是正确的方法,但是要做到这一点,除了 JUnit Jupiter API / Engine ( JUnit Platform)之外,您还需要添加其他依赖项启动器。
例如:
<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,如果 JUnit Platform Launcher 是,则会抛出 ClassNotFoundException 丢失。