运行JUnit测试时找不到类异常

xyb*_*rek 103 java eclipse junit

我在Eclipse中运行JUnit测试时遇到此错误:

Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
Run Code Online (Sandbox Code Playgroud)

我尝试JUnit在类路径中添加库,虽然我正在使用maven,而JUnit库是POM依赖项.

我已经尝试清理项目并使用Eclipse的JUnit插件创建了一个新的JUnit测试用例,但仍然遇到同样的错误.

小智 105

这似乎是因为当你使用时只编译源代码mvn clean compile(我正在使用maven 3.1.0所以我不确定它是否总是表现得像这样).

如果你运行mvn test,测试代码也会编译,但它会运行测试(如果你试图通过Eclipse运行它们,可能不会立即进行测试.)解决这个问题的方法是test-compile每当添加到Maven命令序列时你做了mvn clean.例如,你会跑mvn clean compile test-compile.


slo*_*mek 96

我在测试中遇到了类似的问题并在Web中找到了某个地方,您必须在项目属性中转到Build Path并将Maven Dependencies移到JRE System Library之上.这似乎对我有用.

  • 这个方法用[this](http://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/)帖子中的屏幕截图描述(如果步骤不清楚)来自@ slomek上面的回答) (8认同)
  • 我无法在Eclipse Mars 2中将Maven Managed Dependencies移到JRE系统库之上,但我可以右键单击该项目并转到Properties - > Builders,然后将Maven Project Builder移到Java Builder之上,它对我有用. (2认同)

nhy*_*ted 19

我遇到了同样的问题,我能够使用@slomek的答案修复它,但之后问题重新浮出水面.

我最后通过将项目的输出文件夹添加到JUnit测试的运行配置来修复它.步骤是:

  • 从中查找项目的输出文件夹 Project properties -> Java Build Path -> Default output folder
    • 通常这是 <project-folder>/bin
  • Run -> Run Configurations...
  • 单击单元测试的运行配置,然后单击Classpath选项卡
  • 显式添加项目的输出文件夹User Entries- 即使项目已包含在那里
    • 单击Advanced -> Add folder以添加输出文件夹

这个问题可能是由于Eclipse中奇怪的项目设置 - 例如源文件夹,嵌套的maven项目作为单个项目/文件夹导入(至少我的项目是如何设置的).


joh*_*den 15

如果仅在Eclipse中出现此问题,则在所选项目上执行命令Project - > Clean ...可能会有所帮助.


Ber*_*sen 11

在尝试了一切没有改进之后,我通过重新启动Eclipse解决了我的问题


ITi*_*sha 5

就我而言,我有一个错误的 Maven 目录结构。

应该是这样的:

/src/test/java/ com.myproject.server.MyTest

在我解决了这个问题之后,一切都变得很神奇。


Azi*_*ese 5

我通过运行 maven update 解决了我的问题。右键单击您的项目> Maven > 更新项目