从命令行通过依赖项运行JUnit5

问题描述

我有一个包含以下文件的Java项目:
C:\ MyProject \ myPackage \ MyTests.class
C:\ MyProject \ lib \ junit-platform-console-standalone-1.5.2.jar
C:\ MyProject \ lib \ other-library.jar

MyTests文件是使用带有junit-platform-console-standalone-1.5.2.jar和other-library.jar的IDE编译的。我确认测试可以在IDE上编译并成功运行,但是我的问题是:
如何从命令行(Windows命令提示符)运行MyTests.class中的所有测试,包括那些依赖other-library.jar文件的测试?

在“ MyProject”目录中,我尝试过:

java -jar lib/junit-platform-console-standalone-1.5.2.jar -cp .;libs --scan-class-path --disable-ansi-colors

,这确实会运行某些测试方法,但是对于使用other-library.jar文件的任何测试方法,都会引发ClassNotFoundException。有人知道我在做什么错吗?

我知道如果我使用JUnit4 jar文件进行编译,那么此命令可以正常运行:

java -cp .;libs/* org.junit.runner.JUnitCore myPackage.MyTests

我基本上是在尝试使用junit5做同样的事情。

解决方法

给出布局
C:\ MyProject \ myPackage \ MyTests.class
C:\ MyProject \ lib \ junit-platform-console-standalone-1.5.2.jar
C:\ MyProject \ lib \ other-library.jar

该命令应该起作用。该jar就像包根目录一样被明确列出

C:\MyProject> java -jar lib/junit-platform-console-standalone-1.5.2.jar   \
                   --class-path=.;lib\other-library.jar                   \
                   --scan-class-path

或者,可以使用-cp参数运行Java命令,并直接调用Junit main方法。这应该允许以通配符方式将所有jar加载到类路径中。
奇怪的是,java -cp不等同于junit -cp参数:

> java -cp ".;lib\*" org.junit.platform.console.ConsoleLauncher --scan-class-path