JUnit 5 ConsoleLauncher 不工作

JUnit 5 ConsoleLauncher doesn't work

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

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

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

javac -cp .:junit-platform-console-standalone-1.0.0.jar DisplayNameDemo.java

这条命令执行成功,得到一个DisplayNameDemo.class文件

在那之后,我运行一个如下所示的命令

java -jar junit-platform-console-standalone-1.0.0.jar --select-class DisplayNameDemo.class

但是失败了,说"org.junit.platform.commons.util.PreconditionViolationException: Could not load class with name: DisplayNameDemo.class"

请帮帮我,非常感谢!

您必须在 --select-class 中使用完全限定的 class 名称。此外,它需要在 class 路径上。默认情况下,它只会包含以 TestTests 结尾的 class,因此您必须使用 --include-classname 来禁用或更改过滤器。

java -jar junit-platform-console-standalone-1.1.0.jar \
     --classpath build/classes/java/test \
     --select-class example.DisplayNameDemo \
     --include-classname '.*'