如何使用Console Launcher从命令行运行JUnit5测试?

时间:2017-06-26 19:19:38

标签: java junit command-line-interface junit5

我编译了测试,我正在尝试执行以下操作:

> java -jar lib/junit-platform-console-standalone-1.0.0-M4.jar --class-path ./bin --select-class com.mycompany.DbTest

这引发了一个大规模的异常,就像这样:

Exception in thread "main" java.lang.NoClassDefFoundError: org/junit/platform/commons/JUnitException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
...

但基本上说它无法找到JUnitException类。如果我让控制台启动器寻找测试,它找不到测试:

> java -jar lib/junit-platform-console-standalone-1.0.0-M4.jar -p bin/
╷
├─ JUnit Jupiter ✔
└─ JUnit Vintage ✔

Test run finished after 20 ms
[         2 containers found      ]
[         0 containers skipped    ]
[         2 containers started    ]
[         0 containers aborted    ]
[         2 containers successful ]
[         0 containers failed     ]
[         0 tests found           ]
[         0 tests skipped         ]
[         0 tests started         ]
[         0 tests aborted         ]
[         0 tests successful      ]
[         0 tests failed          ]

我无法知道如何在没有IDE的情况下从命令行运行JUnit5测试。

更新

使用Maven运行测试(使用Surefire插件)会给我带来同样的错误。我甚至删除了所有测试,但只是导入了junit5依赖项,我仍然得到错误。

2 个答案:

答案 0 :(得分:1)

您的初始命令行包含重复项。单个" java -jar ..."应该允许Java运行时查找捆绑的JUnitException类。

同时使用options --class-path--scan-class-path来启动自动扫描。

像: java -ea -jar lib/junit-platform-console-standalone-1.0.0-M4.jar --class-path bin --scan-class-path

如果要使用选择器,例如--select-class,则仍需要提供带--class-path bin的自定义类路径。否则,只有独立jar在类路径上,不包含您的测试。

或者Mac Extension Libraries文件夹中存在干扰测试执行的JAR。请删除它们。

答案 1 :(得分:0)

正如评论中所说,在类路径上使用JUnit 4也是我的问题。确保从macOS extensions文件夹或gradle依赖项中删除它的所有痕迹。我不得不使用

configurations.compile {
    exclude group: 'junit'
}

强制从任何地方删除它,包括传递依赖。