在迁移我的主项目之前,我尝试在我的副项目中试用JUnit 5。我想使用@Nested tests来使我的测试类更干净。
当我运行整个测试套件时,一切都很好。然而,当我尝试运行单个测试时,@嵌套的测试不会被执行。
mvn -Dtest=com.mycompany.test.MyTest surefire:test
字符串
有没有办法让它运行选定的类和所有@嵌套的类?
使用JUnit 5.1.0,JUnit平台1.1.0
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${org.junit.platform.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${org.junit.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
型
测试类别:
public class MyTest {
@Test
public void thisTestExecutes() { }
@Nested
public class NestedTests {
@Test
public void thisTestDoesnt() { }
}
}
型
3条答案
按热度按时间kokeuurv1#
要运行所有嵌套的类,你只需要在类名的末尾添加一个“*”。比如:
字符串
或
型
qyuhtwio2#
面对同样的问题,然后意识到我的父测试类名和.java文件名是不同的。我用右键>重构>重写将我的测试类名更改为我的.java文件名(对于可能的引用问题)。最后用以下命令运行我的测试:
第一个月
顺便说一下,我使用的是maven-surefire-plugin 2.22.2版本。
2nc8po8w3#
整个问题是嵌套测试是以与匿名类相同的方式编译的类,其名称包含**$**。
字符串
如果你使用lambda,那么这些排除会变得越来越重要。这也应该起作用:
型