【问题标题】:Eclipse Plug-in Test execution for JUnit4JUnit4 的 Eclipse 插件测试执行
【发布时间】:2017-10-02 23:14:19
【问题描述】:

我有一个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 库链接到插件。

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

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

    public static Test suite() {
        return new JUnit4TestAdapter(JSTestSuite.class);
    }
}

例外是:

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)

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

!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

我看到这个库在这个地方,但我不明白为什么它无法加载。对于JUnit3 Test Runner 设置 junit3 lib 加载正常。 有一些与此类问题相关的错误(如this)但真的很难理解在这种情况下我能做什么。

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

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

【问题讨论】:

    标签: java eclipse unit-testing junit junit4


    【解决方案1】:

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

    问题#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>
    

    资源链接: Maven "build path specifies execution environment J2SE-1.5", even though I changed it to 1.7

    问题#2 的解决方案:

    JUnit runner 依赖于 JUnit 3.8。它不会被使用,但没有它,整个平台将无法初始化。 所以你需要 2 个版本,如下所示

    检查您是否有以下插件

    org.eclipse.xtext.xbase.junit
    org.junit (3.8.2)
    org.junit (4.8.2)
    

    如何检查 JUnit?

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

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

    如何解决?

    要修复错误,请确保 target platform! 中有 org.junit 3.8!

    所有功劳归A Paul

    资源链接:

    https://stackoverflow.com/a/21334162/2293534

    Aaron Digulla 评论如下:

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

    【讨论】:

    • 嗨,@SkyWalker。感谢您的出色回答,但没有帮助。提供的步骤未解决第一个问题,因为我们的项目已配置为使用 jre 1.8。而且我们不使用maven。您提供的第二个场景是关于如何在 JUnit 配置下运行测试,但现在它工作正常(测试通过)。我正在寻找在“JUnit 插件测试”配置下运行它们的解决方案。 JUnit 3 库位于目标平台内,而 junit4 库链接到插件本身。而且“JUnitPlug-in Tests”conf下也没有Classpath选项卡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-08
    • 2011-01-20
    • 2015-12-08
    • 1970-01-01
    • 2019-01-28
    相关资源
    最近更新 更多