gpt4 book ai didi

java - 如果没有至少一个 TestEngine,则无法创建 Launcher;考虑在 Junit 5 的类路径中添加一个引擎实现 JAR

转载 作者:IT老高 更新时间:2023-10-28 20:46:13 24 4
gpt4 key购买 nike

当我尝试在 junit5 中运行测试用例时,我得到了以下执行:

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test (default-test) on project CRUD-App: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test failed: There was an error in the forked process
org.junit.platform.commons.util.PreconditionViolationException: Cannot create Launcher without at least one TestEngine; consider adding an engine implementation JAR to the classpath
at org.junit.platform.commons.util.Preconditions.condition(Preconditions.java:161)
at org.junit.platform.launcher.core.DefaultLauncher.<init>(DefaultLauncher.java:52)
at org.junit.platform.launcher.core.LauncherFactory.create(LauncherFactory.java:42)
at org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(JUnitPlatformProvider.java:59)
at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:286)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:240)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)

pom.xml

<dependencies>
...
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit5-api</artifactId>
<version>5.0.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.0.0-M2</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

测试类:

public class PersonServiceTest {

final Database database = Database.from("jdbc:h2:mem:" + App.DB_NAME);

final PersonService personService = new PersonService(database);

public PersonServiceTest() {
}

@Test
@DisplayName("@Person#insert()")
public void testInsert() {
personService.insert(new PersonBuilder()
.setId(1).setName("Bhuwan")
.setAddress("KTM")
.setContactNo("984849").createPerson()
);
}

}

Maven 目标: mvn 测试

最佳答案

ALPHA 快照 Artifact (即 org.junit:junit5-api:5.0.0-SNAPSHOT)与 M2 Artifact (即, org.junit.platform:junit-platform-surefire-provider:1.0.0-M2),不起作用。

Maven用户指南中的部分建议查看 pom.xml来自 junit5-maven-consumer项目。如果您按照该示例进行操作,您将得到类似以下内容。

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<junit.jupiter.version>5.0.0-M2</junit.jupiter.version>
<junit.platform.version>1.0.0-M2</junit.platform.version>
</properties>

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit.platform.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

编写你的测试,你只需要 junit-jupiter-api;但是,为了运行您的测试,您必须在类路径上有一个 TestEngine。因此,对于 JUnit Jupiter,您还需要在类路径中使用 junit-jupiter-engine

正如 Nicolai Parlog 指出的,您可以添加 junit-jupiter-engine 作为 maven-surefire-plugin 的依赖项;但是,这不会在您的 IDE 的类路径中包含 JupiterTestEngine

如果您仅通过 Maven 或最新的 IntelliJ 2016 测试版(内置对 JUnit 5 的支持)运行测试,那么您可能不在乎 JupiterTestEngine 是否在IDE 中的类路径。但是...如果您使用的是 Eclipse、NetBeans 或 IntelliJ 的非 beta 版本,您肯定也需要 IDE 的类路径中的 JupiterTestEngine

问候,

Sam(核心 JUnit 5 提交者)

关于java - 如果没有至少一个 TestEngine,则无法创建 Launcher;考虑在 Junit 5 的类路径中添加一个引擎实现 JAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38993446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com