我编译了测试,并尝试执行以下操作来运行它们:
> 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)
...
但基本上说它找不到JUnitExc的类。如果我让控制台启动器查找测试,它找不到任何测试:
> 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 依赖项的测试除外,但我仍然收到错误。
您的初始命令行包含一个副本。单个“java -jar ...”应该允许Java运行时找到捆绑的< code>JUnitException类。
同时使用选项--class path
和--scan class path
来运行自动扫描。
类似于:java-ea-jar lib/junit-platform-console-standalone-1.0.0-M4.jar-类路径bin-扫描类路径
如果要使用选择器,例如 --select-class,您仍然必须为自定义类路径提供 --class-path bin
。否则,只有独立 jar 位于类路径上,其中不包含您的测试。
或者在Mac Extension Libraries文件夹中有干扰测试执行的jar。请把它们拿掉。
正如评论中所说,类路径上有JUnit 4对我来说也是个问题。确保从macOS扩展文件夹或您的gradle依赖项中删除它的所有痕迹。我不得不使用
configurations.compile {
exclude group: 'junit'
}
从任何地方强制删除它,包括传递依赖。