2

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

> 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 依赖项的测试,我仍然得到错误。

4

2 回答 2

1

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

使用选项 --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扩展库文件夹中存在干扰测试执行的 JAR。请删除它们。

于 2017-06-26T20:46:52.267 回答
0

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

configurations.compile {
    exclude group: 'junit'
}

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

于 2017-12-12T02:47:05.347 回答