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)
<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快照工件(即org.junit:junit5-api:5.0.0-snapshot
)与M2工件(即org.junit.platform:junit-platform-surefire-provider:1.0.0-M2
)混合是行不通的。
用户指南中的Maven部分建议从junit5-maven-consumer项目中查看pom.xml
。如果您遵循该示例,您将得到如下所示的结果。
<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或使用IntelliJ2016的最新测试版(它内置了对JUnit5的支持)运行测试,那么您可能并不关心JupiterTestEngine
是否位于IDE中的类路径上。但是...如果您使用的是Eclipse、NetBeans或IntelliJ的非测试版,那么您肯定也需要IDE中类路径上的JupiterTestEngine
。
问候,
问题内容: 当我尝试在junit5中运行测试用例时,得到以下执行: pom.xml 测试类别: Maven目标: 问题答案: 首先,您正在将 ALPHA 快照工件(即)与 M2 工件(即)混合在一起,这将永远无法工作。 用户指南中的Maven部分建议您从junit5-maven- consumer 项目中签出。如果遵循该示例,最终将得到类似以下内容的结果。 要 编写 测试,您只需要; 但是,为了
我在用 Linux 编写的 CUDA 代码中使用了一个库(该库称为 cublas),我可以使用 nvcc 成功编译我的代码,但是当我运行代码时出现此错误: 加载共享库时出错:libcublas.so.7.5:无法打开共享对象文件:没有这样的文件或目录 我发现此链接是一种解决方案,建议运行一些命令以解决问题。基于此链接的一种解决方案是运行以下命令: export LD_LIBRARY_PATH=$L
我有一个批处理文件,它使用依赖于tools.jar(来自JDK)的maven运行java类。 例如: mvn-f.\pom.xml-e exec:java-dfile.encoding=“utf-8”-dexec.mainclass=MyClass-dexec.args=“%1%2%3%4%5%6%7%8%9”-dexec.classpathscope=runtime 我的程序使用JDK中的too
我试着去看其他的代码例子,但是它们和我的代码比较相似,但是我的应用程序仍然会因为同样的错误而崩溃。 这是我使用firebase文档的指导方针编写的代码: 上面的代码正在将otp发送到给定的号码,但是它崩溃了,并且cat-log显示了上面提到的错误。
假设我有两个类叫做ad。 它们都实现了。 对于只有两种方法,分别称为和。 一切都很好。但是,虽然这似乎很好地利用了s,但我认为如果我需要向这个添加方法,实现就会中断,即我需要去实现这些类中的新方法,这打破了“封闭-开放原则”。 所以我想,除了,如果将来需要添加新方法,我还会使用类。 例如,。 这听起来是个好计划(如果不是,请纠正我)。 但问题是,如果这些类已经有其他类了怎么办?在这种情况下,我不能
问题内容: 我在表格中有两列:和。我想以不允许插入两行的方式使对(,)唯一: 问题答案: 在这种情况下,您可以在表达式上创建索引: 注意:如果各列允许值,则有些奇怪。在那种情况下,无论位于哪个列中,相同的值都只能被允许一次。如果这实际上是一个问题,则可以使用更复杂的表达式来解决。