JUnit 5 ConsoleLauncher 不起作用

Mar*_*cuX 1 java junit command-line junit5

我有一个 DisplayNameDemo.java 文件,如下所示

显示名称演示程序

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

@DisplayName("A special test case")
public class DisplayNameDemo {

    @Test
    @DisplayName("Custom test name containing spaces")
    void testWithDisplayNameContainingSpaces() {
    }

    @Test
    @DisplayName("?°?°??")
    void testWithDisplayNameContainingSpecialCharacters() {
    }

    @Test
    @DisplayName(" ")
    void testWithDisplayNameContainingEmoji() {
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将它编译为 .class 文件使用

javac -cp .:junit-platform-console-standalone-1.0.0.jar DisplayNameDemo.java
Run Code Online (Sandbox Code Playgroud)

这个命令执行成功?我得到了一个 DisplayNameDemo.class 文件。

之后,我运行了如下所示的命令

java -jar junit-platform-console-standalone-1.0.0.jar --select-class DisplayNameDemo.class
Run Code Online (Sandbox Code Playgroud)

但它失败了并说“org.junit.platform.commons.util.PreconditionViolationException:无法加载名称为:DisplayNameDemo.class的类”

错误信息

请帮帮我,非常感谢!

Mar*_*ipp 5

您必须将完全限定的类名与--select-class. 此外,它需要在类路径上。默认情况下,它仅包含以Test或结尾的类Tests,因此您必须使用--include-classname来禁用或更改过滤器。

java -jar junit-platform-console-standalone-1.1.0.jar \
     --classpath build/classes/java/test \
     --select-class example.DisplayNameDemo \
     --include-classname '.*'
Run Code Online (Sandbox Code Playgroud)