运行JUnittesting时未发现类exception
在Eclipse中运行JUnittesting时出现这个错误:
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)
我已经尝试在类path中添加JUnit
库,虽然我正在使用maven,而JUnit库是在POM依赖。
我已经尝试清理项目,并使用Eclipse的JUnit插件创build了一个新的JUnittesting用例,仍然得到相同的错误。
这似乎是因为只有源代码编译时使用mvn clean compile
(我使用maven 3.1.0,所以我不知道它是否总是这样)。
如果你运行mvn test
,那么testing代码也会被编译,但是它会运行testing(如果你试图通过Eclipse来运行mvn test
,那么testing代码可能不会立即需要)。解决方法是将test-compile
添加到你的Maven命令序列,每当你做一个mvn clean
。 例如,你可以运行mvn clean compile test-compile
。
我有一个与我的testing类似的问题,发现在Web的某个地方,你必须去你的项目的属性中的生成path ,并移动Maven的依赖上面的JRE系统库 。 这似乎为我工作。
我面临同样的问题,我可以使用@ slomek的答案来解决这个问题,但是之后这个问题又重新出现了。
我最终通过将项目的输出文件夹添加到JUnittesting的运行configuration来修复它。 步骤是:
- 从
Project properties -> Java Build Path -> Default output folder
find您的项目的输出文件Project properties -> Java Build Path -> Default output folder
- 通常这是
<project-folder>/bin
- 通常这是
- 转到
Run -> Run Configurations...
- 点击unit testing的运行configuration,然后点击
Classpath
标签 - 在
User Entries
下显式添加项目的输出文件夹 – 即使项目已经包含在那里- 点击
Advanced -> Add folder
来添加输出文件夹
- 点击
这个问题可能是由于在Eclipse中奇怪的项目设置 – 例如源文件夹嵌套的maven项目导入为一个单一的项目/文件夹(至less这是我的项目是如何设置的)。
在尝试了一切之后,没有任何改进,我通过重新启动Eclipse解决了我的问题
如果仅在Eclipse中出现此问题,则在所选项目上执行命令“项目” – >“清理…”可能会有所帮助。
在我的情况下,我有一个错误的maven目录结构。
应该是这样的:
/ src / test / java / com.myproject.server.MyTest
在我修好之后 – 一切都像魅力一样。
就我而言,只有接下来的步骤帮助我解决了这个问题:
- Project-> properties-> Run / Debug Settings。
- 在“启动configuration…..”中select类/项目
- 编辑 – >类path – >“恢复默认条目”
早些时候,在这种情况下,我总是做mvn eclipse:eclipse
并重新启动我的Eclipse,它的工作。 迁移到GIT后,它停止工作对我来说有点怪异。
这里的基本问题是Eclipse先生没有find编译的类。 然后,我将输出文件夹设置为默认由mvn clean install
生成的Project / target / test-classes而不跳过testing,并继续执行以下解决方法:
选项1:为每个testing用例设置类path
Eclipse – > Run – > Run Configurations – >在JUnit下 – >selectmytest – >在classpath下tab – >select用户条目 – >高级 – >添加文件夹 – >select – >应用 – >运行
选项2:创build类pathvariables并将其包含在所有testing用例的类path中
Eclipse – > Windows – > Classpathvariables – > New – > [Name:Junit_test_cases_cp | 然后进入Eclipse-> Run – > Run Configurations – > JUnit-> select mytest – > classpath tab – > Select User Entries-> >适用 – >运行
这是在网上尝试所有build议后,目前唯一的工作。
我在debuggingJunits的Eclipse Helios上遇到了类似的问题。 我的问题是有点不同,因为我能够成功地运行Junits,但是当debugging相同的JUNIT时,我得到ClassNotFoundException。
我已经尝试了各种不同的解决scheme可用在其他地方的Stackoverflow.com和论坛,但似乎没有任何工作。 在这些问题敲了近两天之后,我终于find了解决办法。
如果没有任何解决scheme似乎可行,只需删除工作区中创build的.metadata文件夹即可。 这会造成额外的额外开销,导入项目和你所做的各种configuration,但是这些肯定会解决这些问题。
希望这些帮助。
这些步骤为我工作。
- 删除本地Maven仓库的内容。
- 在命令行中运行mvn clean install 。 (cd到pom目录)。
- 在Eclipse中构build项目。
1- mvn eclipse:eclipse
2-项目清理所有项目
3-重新启动
值得一提的是,如果你正在使用eGit,并且你的类path会因为说的更新而被更新,像Clover这样的testing覆盖工具,有时会出现一个清理呃逆,并不能完全删除/path/to/git/repository/<project name>/bin/
本质上,我使用了Eclipse的错误日志视图,确定在清理过程中导致问题的原因,导航到源目录,并手动删除<project name>/bin
目录。 一旦完成,我回到Eclipse并刷新( F5
)我的项目,错误消失了。
检查您的项目是否作为Maven项目打开,而不仅仅是一个常规的Java项目。 其实是一个不容易的事情,但这也是你可能会错过的原因。
这也可能是由于“[错误]在这个环境中没有提供编译器,也许你正在运行JRE而不是JDK?
可能是你忘了将Main类和Test Case类放在/ src / test / java中。 检查一次。