JUnit4的Eclipse插件测试执行

Mic*_*rov 8 java eclipse junit unit-testing junit4

我有一个JUnit4测试套件,我想在JUnit Plug-in Test运行配置下执行它. 在此输入图像描述

它在通过JUnit Test配置运行时成功通过,但对于插件conf,它以不同的方式失败.

例如,如果我使用JUnit4TestAdapter它失败了ClassCastException,如果我试图仅通过@RunWith注释运行它,它会错误地"找不到方法".对于这两种实现,我JUnit4在运行配置中使用Test Runner设置.

我用

  • Eclipse Neon.1a版本(4.6.1)
  • Jdk 1.8
  • 将JUnit 4.1 lib链接到插件.

对于第一种情况,似乎Eclipse在执行套件时继续使用JUnit3版本.这里是:

@RunWith(Suite.class)
@SuiteClasses({ DndTest.class })
public class JSTestSuite {

    public static Test suite() {
        return new JUnit4TestAdapter(JSTestSuite.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

例外是:

java.lang.ClassCastException: junit.framework.JUnit4TestAdapter cannot be cast to junit.framework.Test
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.getTest(RemoteTestRunner.java:403)
Run Code Online (Sandbox Code Playgroud)

在开始测试时,我在控制台中有一条奇怪的日志消息:

!ENTRY org.eclipse.update.configurator 2017-05-04 17:58:57.279
!MESSAGE Could not install bundle ../../platform/eclipse/plugins/org.eclipse.jdt.junit4.runtime_1.1.600.v20160505-0715.jar   No match is available for the required execution environment: J2SE-1.5
Run Code Online (Sandbox Code Playgroud)

我看到这个lib就在这个地方,但我无法理解为什么它无法加载.对于JUnit3Test Runner设置junit3 lib加载好了.有一些与这些问题有关的错误(比如这个)但是很难理解在这种情况下我能做些什么.

对于第二种情况,我只是尝试执行简单的JUnit4情况而不使用JUnit4TestAdapter,但它找不到任何方法.

重新加载日食和重命名方法没有帮助.在这种情况下我该怎么办?

Sky*_*ker 3

我发现有几个问题。首先我一一考虑解决问题。

问题#1:所需执行环境没有匹配项:J2SE-1.5

问题#2: java.lang.ClassCastException:junit.framework.JUnit4TestAdapter 无法转换为 junit.framework.Test

问题#1 的解决方案:

第一个解决方案:

  1. 右键单击您的项目
  2. 单击属性
  3. 单击左侧菜单中的“Java编译器”选项
  4. 在右侧的 JDK 合规性部分下,将其更改为“1.8”

第二种解决方案:

如果您在项目中使用maven,那么您可以更改pom.xml文件,如下所示:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>

    </pluginManagement>
</build>
Run Code Online (Sandbox Code Playgroud)

资源链接: Maven“构建路径指定执行环境J2SE-1.5”,尽管我将其更改为1.7

问题#2 的解决方案:

JUnit 运行程序依赖于 JUnit 3.8。它不会被使用,但如果没有它,整个平台就无法初始化。所以你需要像下面这样的2个版本

检查您是否有以下插件

org.eclipse.xtext.xbase.junit
org.junit (3.8.2)
org.junit (4.8.2)
Run Code Online (Sandbox Code Playgroud)

如何检查 JUnit?

在 Eclipse 中,请检查 2 个部分。

  1. 检查您的项目Properties->Java Build Path->Libraries (tab)
  2. 检查你的项目Run Configurations->JUnit->Classpath (tab)

怎么修?

要修复该错误,请确保目标平台中有 org.junit 3.8 !

所有功劳都归功于A Paul

资源链接:

/sf/answers/1493391371/

Aaron Digulla评论如下:

尽管 org.eclipse.xtext.junit4 导入了 org.junit 4.5.0,但 org.eclipse.xtext.junit (注意末尾缺少“4”)似乎依赖于 JUnit 3.8。添加旧的、过时的 JUnit 包后,插件测试开始。