NetBeans Junit5测试输出忽略DisplayName嵌套格式

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”中获取名称作为NetBeans中的测试结果。仅显示测试函数的名称。嵌套测试的分组显示也将被忽略

源代码

@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() {
    }
}