当我尝试执行某些公寓测试时,会引发下列错误:
java.lang.NoClassDefFoundError: org/junit/runner/manipulation/Filter
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.java:320)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:310)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:305)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:283)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:207)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:191)
我必须提到junit-4.11.jar被添加到项目构建路径中。
**编辑:**我(Gábor Lipták)读过另一个问题,这个问题应该是重复的。***这不是重复的。***如果有人在Eclipse中使用Gradle Buildship作为构建插件,如果您错误地将测试类放在main/resorces
而不是test/resources
中,则会抛出此错误。Buildship在生成运行配置时似乎会处理测试与编译类路径。请参见下面我的.classpath
文件片段作为证据:
<classpathentry kind="src" output="bin/main" path="src/main/resources">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main,test"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="bin/test" path="src/test/resources">
<attributes>
<attribute name="gradle_scope" value="test"/>
<attribute name="gradle_used_by_scope" value="test"/>
</attributes>
</classpathentry>
5条答案
按热度按时间2j4z5cfb1#
即使我也面临着同样的问题,所以尝试以下步骤-
1.以鼠标器右击按一下[套件总管]中的项目,然后按一下[属性]。
1.单击“库”选项卡.
1.单击“添加库”按钮。
1.选择“JUnit,”然后单击“下一步.”
1.选择JUnit 4(这就是我正在使用的)。
1.单击“完成”。
1.现在以鼠标器右击按一下包含公寓测试的档案,然后选取[属性]。
1.在“运行/调试”设置下,从该文件的“启动配置”中删除所有条目。单击“确定”。
希望你现在能进行测试。
cu6pst1q2#
将JUnit库添加到模块路径而不是类路径可能会导致此错误。
在Eclipse最左边的面板“Package Explorer”中,右键单击您的项目,向下转到属性,然后转到“Java构建路径”,单击“类路径”而不是“模块路径”,单击“添加库...”,然后单击Junit。
gpfsuwkq3#
在我的示例中,错误具有相同的堆栈跟踪(以
java.lang.Class.forName0(Native Method)
结尾),但错误消息不同:java.lang.VerifyError: (class: org/junit/runner/manipulation/Alphanumeric, method: create signature: (Lorg/junit/runner/manipulation/Ordering$Context;)Lorg/junit/runner/manipulation/Ordering;) Wrong return type in function
原因是我把JUnit从4.11升级到了4.13.1,因为GitHub的“dependabot”在我的某个公共项目上建议我这么做,甚至创建了合并请求供我接受,我想“当然,为什么不呢,还有什么可能出错呢?”结论:不要信任GitHub的依赖者。
sy5wg1nm4#
看起来这是eclipse中的一个缺陷,请更新eclipse或基于eclipse的编辑器来修复这个问题。
有关更多详细信息,请参阅此处-https://bugs.eclipse.org/bugs/show_bug.cgi?id=525844
5sxhfpxr5#
在我的例子中,它只是在Eclipse中运行了一个Maven更新,然后它又工作了。