【问题标题】:Running JUnit5 from Command line with dependencies从具有依赖项的命令行运行 JUnit5
【发布时间】:2020-10-09 22:50:34
【问题描述】:

我有一个包含以下文件的 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。

【问题讨论】:

    标签: java cmd junit5


    【解决方案1】:

    鉴于布局
    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
    

    【讨论】:

    • 如果我在该 lib 文件夹中有多个 jar 文件,是否可以像使用 JUnit4 一样指定通配符?
    • 第二个命令正是我想要的。我在 JUnit5 的 org.junit.platform.console.ConsoleLauncher 上找不到任何信息。谢谢!!
    猜你喜欢
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 1970-01-01
    • 2016-03-08
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多