问题描述
我有一个包含以下文件的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