这是 Eclipse 编辑器的快照。您可以看到测试和 JUnit 选项卡。当我尝试运行测试时,它显示已终止。
有人知道这里发生了什么吗?
不确定您的问题是否已经解决。
Project
当我更正-> Properties
-> Java Compiler
-> 时,我遇到了类似的问题JDK Compliance settings
。
我在 1.5 和 1.6 之间发生了冲突。当我恢复到 1.5(这是当前活动的 JRE)时,我的 JUnit 又开始工作了。
一种可能性是 Eclipse 的 JUnit 运行程序被该方法的存在弄糊涂了,main
并且正在运行该方法而不是测试方法。
尝试注释掉该main
方法。它根本不应该在那里,IMO。
(顺便说一句, main 方法对我来说看起来不正确。我原以为它会TestSuite
用单元测试类作为参数来实例化 a ,但你似乎给了它正在测试的类。那不会有任何“测试”方法,这可以解释为什么没有运行测试......)
手动定义运行行为:右键单击 -> 运行方式 ->运行配置:
然后你可以定义测试用例的每一个细节:测试类、测试方法、类路径、junit 版本、JVM 参数等。
就像已经提到的,删除主要方法,可能会有所帮助。如果我没记错的话,有什么特别的理由从 Juni3 的 TestCase 扩展?您是否使用 @Test 注释尝试过 Junit 4
例如:
@Test
public void testSomething() {
//you stuff
}
首次将 junit jar 文件添加到构建路径时,我遇到了同样的问题。确保将 junit.jar 文件添加到 Java Build Path -> Classpath 部分,而不是 modulepath 部分
我的情况不同,但我得到了相同的junit错误。我在junit依赖方面有冲突,使用:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
有了这个,你必须使用
import org.junit.jupiter.api.Test;
代替
import org.junit.Test;
在我的情况下,我已经进行了重构并且 .classpath 没有更新,并且控制台显示有关无效类的错误。更新类路径文件后,一切又开始工作了。
当我看到没有运行测试时,我打开控制台并看到以下错误:
java.lang.UnsupportedClassVersionError: junit/framework/Test (Unsupported major.minor version 49.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadTestLoaderClass(RemoteTestRunner.java:328)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:318)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:313)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:291)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:212)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
经过进一步调查,我意识到我使用的 junit 框架是针对 1.6 jre 构建的,而我正在针对 1.3 jre 构建单元测试。当我针对 1.6 构建单元测试时,我的测试运行了。或者,我想我本可以针对 1.3 构建(或找到)junit,并且我本可以处于良好状态。我走的是阻力最小的道路。
当我在类路径上有两罐junit时发生在我身上。一个罐子隐藏在独立的硒服务器中。我通过从类路径中删除另一个 jar 并让运行时使用 selenium 服务器独立中的 junit jar 解决了这个问题。我在控制台中找不到任何关于类冲突或 Java 版本警告的消息。
不确定这是否有帮助,但在我的情况下,我必须在 Junit 最终开始响应之前更新我的项目配置 Maven->更新项目配置
在我的例子中,我使用了一个未被确定为符合测试条件的内部类。解决方法是使该类成为静态内部类,如下所示:
public class MyClass { //... class I wanted to test
}
这个内部类(即在同一个文件中)用于测试 MyClass - 但 eclipse 没有找到它......除非它是静态的。
public static class MyClassTest { // ....
}
请检查底部区域的“进度”选项卡,以查看在尝试运行 JUnit 测试时是否缺少任何项目依赖项。那是我的问题。
确保您没有其他进程阻止执行。就我而言,构建工作区正在休眠,阻止了所有 junit 执行。