【发布时间】:2020-01-07 21:36:36
【问题描述】:
当我尝试在 eclipse 中对使用 gradle 创建的项目运行 junit 测试时,我在 eclipse 控制台中收到以下错误
Error: Could not find or load main class org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
Caused by: java.lang.ClassNotFoundException: org.eclipse.jdt.internal.junit.runner.RemoteTestRunner
如果我使用命令行运行相同的测试
gradle test
效果很好。
我还注意到,如果我删除以下两个依赖项:
testImplementation group: 'org.apache.tomee', name: 'openejb-cxf-rs', version: '8.0.0'
testImplementation group: 'org.apache.tomee', name: 'arquillian-tomee-embedded', version: '8.0.0'
测试可以在 Eclipse 中启动。显然,由于缺少依赖项,测试在某些时候会失败。
看起来这是 Eclipse 中发生的某种奇怪的冲突。在 Eclipse 12 月更新之前它也运行良好。
为了完整性,这里的版本:
- gradle 6.0.1
- Eclipse 2019-12 (4.14.0)
- JDK 11
- Junit 4.12
今天我还尝试安装旧版本的 Eclipse (2019-09),并使用相同的设置运行测试。
我还注意到以下内容。如果我转到 Run->Run Configurations,选择我的测试运行器并“显示命令行”,我注意到当事情不工作时,类路径被写入文件中,而当它工作时,它只是作为命令行参数写入。
所以以下方法不起作用:
C:\Program Files\Java\jdk-11.0.4\bin\javaw.exe -ea -Dfile.encoding=Cp1252 "@C:\projects\provisioning-service\provisioning-service-resource\.temp-ExampleTest-classpath-arg-1578480407549.txt" org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 58388 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames com.xelion.provisioning.resource.ExampleTest
以下是
C:\Program Files\Java\jdk-11.0.4\bin\javaw.exe -ea -Dfile.encoding=Cp1252 -classpath "C:\projects\provisioning-service\provisioning-service-resource\target\bin;...manymorehere" org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 58412 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames com.xelion.provisioning.resource.ExampleTest
所以主要区别似乎是在第一种情况下,类路径是从文件中评估的
C:\projects\provisioning-service\provisioning-service-resource\.temp-ExampleTest-classpath-arg-1578480407549.txt
在第二种情况下,它被写出来
-classpath "C:\projects\provisioning-service\provisioning-service-resource\target\bin;...
【问题讨论】: