【问题标题】:JUnit Tests not running in EclipseJUnit 测试未在 Eclipse 中运行
【发布时间】:2012-06-02 04:35:01
【问题描述】:

这是 Eclipse 编辑器的快照。您可以看到测试和 JUnit 选项卡。当我尝试运行测试时,它显示已终止。

有人知道这里发生了什么吗?

【问题讨论】:

  • 如何运行测试?我的意思是通过您的 BasicInfoTest 类中的 main 方法还是通过右键单击 Eclipse 包资源管理器?
  • 我右键单击并作为 JUnit 测试运行。
  • 对我来说看起来像一个测试套件,你能把它作为一个 Junit 测试套件而不是 Junit 测试用例来运行吗..

标签: java eclipse junit


【解决方案1】:

在我的例子中,这是因为 Eclipse 开始使用 JUnit 5 作为测试运行器。我通过运行配置并选择较旧的测试运行器解决了这个问题:

【讨论】:

    【解决方案2】:

    不确定您的问题是否已经解决。

    我有一个类似的问题,当我更正Project -> Properties -> Java Compiler -> >JDK Compliance settings

    我在 1.5 和 1.6 之间发生了冲突。当我恢复到 1.5(这是当前活动的 JRE)时,我的 JUnit 又开始工作了。

    【讨论】:

    • 我也看到了同样的情况,但是当我退回 1.6(和 1.8)时,它也起作用了。所以恢复到 1.5,然后再次设置为 1.6
    【解决方案3】:

    一种可能性是 Eclipse 的 JUnit 运行程序被 main 方法的存在弄糊涂了,并且正在运行该方法而不是测试方法。

    尝试注释掉main 方法。它根本不应该在那里,IMO。

    (顺便说一句,main 方法对我来说看起来不正确。我原以为它会用单元测试类作为参数来实例化 TestSuite,但你似乎给它提供了被测类. 那不会有任何“测试”方法,这可以解释为什么没有运行测试......)

    【讨论】:

      【解决方案4】:

      手动定义运行行为:右键->运行方式->运行配置

      然后你可以定义测试用例的每一个细节:测试类、测试方法、类路径、junit 版本、JVM 参数等。

      【讨论】:

        【解决方案5】:

        就像已经提到的,删除 main 方法,可能会有所帮助。如果我没记错的话,有什么特别的理由从 Juni3 的 TestCase 扩展?您是否使用 @Test 注释尝试过 Junit 4

        例如:

        @Test
        public void testSomething() {
             //you stuff
        }
        

        【讨论】:

          【解决方案6】:

          第一次将 junit jar 文件添加到构建路径时,我遇到了同样的问题。 确保将 junit.jar 文件添加到 Java Build Path -> Classpath 部分,而不是 modulepath 部分

          【讨论】:

          • 谢谢!我将它添加到我的模块路径中,但不知道发生了什么
          【解决方案7】:

          在我的情况下,我进行了重构并且 .classpath 没有更新,并且控制台显示有关无效类的错误。更新类路径文件后,一切又开始工作了。

          【讨论】:

            【解决方案8】:

            当我看到没有运行测试时,我打开控制台并看到以下错误:

            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,并且我本可以处于良好状态。我走的是阻力最小的路。

            【讨论】:

              【解决方案9】:

              当我在类路径上有两个 junit 罐子时,发生在我身上。一个罐子隐藏在独立的硒服务器中。我通过从类路径中删除另一个 jar 并让运行时使用 selenium 服务器独立中的 junit jar 解决了这个问题。我在控制台中找不到任何关于类冲突或 Java 版本警告的消息。

              【讨论】:

                【解决方案10】:

                不确定这是否有帮助,但在我的情况下,我必须更新我的项目配置 Maven->在 Junit 最终开始响应之前更新项目配置

                【讨论】:

                  【解决方案11】:

                  在我的例子中,我使用了一个未被确定为符合测试条件的内部类。解决方法是使该类成为这样的静态内部类:

                  public class MyClass { //... class I wanted to test
                  }
                  

                  这个内部类(即在同一个文件中)用于测试 MyClass - 但 eclipse 没有找到它......除非它是静态的。

                  public static class MyClassTest  { // ....
                  }
                  

                  【讨论】:

                    【解决方案12】:

                    确保您没有其他进程阻止执行。在我的情况下,构建工作区正在休眠,阻止所有 junit 执行。

                    【讨论】:

                      【解决方案13】:

                      请检查底部区域的“进度”选项卡,以查看在尝试运行 JUnit 测试时是否缺少任何项目依赖项。那是我的问题。

                      【讨论】:

                        【解决方案14】:

                        我的情况不同,但我得到了相同的 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;
                        

                        【讨论】:

                          猜你喜欢
                          • 1970-01-01
                          • 2010-10-13
                          • 2010-09-30
                          • 1970-01-01
                          • 2021-10-25
                          • 2021-09-10
                          • 2019-01-30
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多