NetBeans Junit5测试输出忽略DisplayName嵌套格式
我没有从注释“@DisplayName”中获取名称作为NetBeans中的测试结果。仅显示测试函数的名称。嵌套测试的分组显示也将被忽略 源代码NetBeans Junit5测试输出忽略DisplayName嵌套格式,netbeans,junit5,Netbeans,Junit5,我没有从注释“@DisplayName”中获取名称作为NetBeans中的测试结果。仅显示测试函数的名称。嵌套测试的分组显示也将被忽略 源代码 @DisplayName("test facade") public class TestFacadeTest { @BeforeAll public static void setUpClass() { } @AfterAll public static void tearDownCla
@DisplayName("test facade")
public class TestFacadeTest {
@BeforeAll
public static void setUpClass() {
}
@AfterAll
public static void tearDownClass() {
}
@BeforeEach
public void setUp() {
}
@AfterEach
public void tearDown() {
}
@Test
@DisplayName("senseless test")
public void test(){
Assertions.assertTrue(true);
}
@Nested
@DisplayName("tests - compareStringNullSave")
class CompateStringNullSaveTestGroup {
@BeforeEach
public void setUp() {
}
@Test
@DisplayName("both identical")
public void Test1(){
String str1 = "Test123";
String str2 = "Test123";
Assertions.assertTrue(TestFacade.compareStringNullSave(str1, str2));
Assertions.assertTrue(TestFacade.compareStringNullSave(str2, str1));
}
@Test
@DisplayName("Identical text but different uppercase and lowercase letters")
public void Test2(){
String str1 = "Test123";
String str2 = "test123";
Assertions.assertFalse(TestFacade.compareStringNullSave(str1, str2));
Assertions.assertFalse(TestFacade.compareStringNullSave(str2, str1));
}
}
}
从pom.xml中提取
<dependencies>
[...]
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
[...]
</dependencies>
<build>
<plugins>
[...]
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
<configuration>
<properties>
<configurationParameters>
junit.jupiter.conditions.deactivate = *
junit.jupiter.extensions.autodetection.enabled = true
junit.jupiter.testinstance.lifecycle.default = per_class
</configurationParameters>
</properties>
</configuration>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
[...]
org.junit.jupiter
JUnitJupiter api
5.7.0
测试
org.junit.jupiter
朱尼特朱庇特酒店
5.7.0
测试
org.junit.jupiter
朱尼特木星发动机
5.7.0
测试
[...]
[...]
maven surefire插件
2.22.2
junit.jupiter.conditions.deactivate=*
junit.jupiter.extensions.autodetection.enabled=true
junit.jupiter.testinstance.lifecycle.default=每类
maven故障保护插件
2.22.2
我必须设置什么,以便NetBeans中的测试显示显示显示名称并使用嵌套分组
NetBeans版本:12.0
Java版本:11(OpenJDK)Maven在surefire插件的
3.0.0.0-M4
中添加了对@Display
注释的支持。此外,您还需要配置statelessTestsetReporter
和statelessTestsetInfoReporter
扩展的参数,以允许NetBeans正确匹配显示名称
因此,目前(1.2021),您可以使用3.0.0.0-M4
或更新版本的surefire插件,JUnit的版本应该超过5.5.2。类似的方法应该会奏效:
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<statelessTestsetReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5Xml30StatelessReporter">
<version>3.0</version>
<usePhrasedFileName>true</usePhrasedFileName>
<usePhrasedTestSuiteClassName>true</usePhrasedTestSuiteClassName>
<usePhrasedTestCaseClassName>true</usePhrasedTestCaseClassName>
<usePhrasedTestCaseMethodName>true</usePhrasedTestCaseMethodName>
</statelessTestsetReporter>
<statelessTestsetInfoReporter implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoReporter">
<usePhrasedClassNameInRunning>true</usePhrasedClassNameInRunning>
</statelessTestsetInfoReporter>
<properties>
<configurationParameters>
junit.jupiter.conditions.deactivate = *
junit.jupiter.extensions.autodetection.enabled = true
junit.jupiter.testinstance.lifecycle.default = per_class
</configurationParameters>
</properties>
</configuration>
</plugin>
</plugins>
至于嵌套分组和
@nested
注释,目前,NetBeans不支持在测试结果窗口中对测试结果进行嵌套分组。对于这样的测试,最好使用不同的类,而不是嵌套类。谢谢,效果很好
@DisplayName("Display Name of class")
public class testClassSimple {
@Test
@DisplayName("Display name of method 1")
public void testMethod1() {
}
@Test
@DisplayName("Display name of method 2")
public void testMethod2() {
}
}