当前位置:  开发笔记 > 编程语言 > 正文

IntelliJ IDEA与Junit 4.7"!!! JUnit 3.8或更高版本预期:"

如何解决《IntelliJIDEA与Junit4.7"!!!JUnit3.8或更高版本预期:"》经验,为你挑选了5个好方法。

当我尝试在IntelliJ IDEA中运行以下测试时,我收到消息:

"!!! JUnit 3.8或更高版本预期:"

应该注意的是,这是我在IntelliJ IDEA 9中工作的Android项目.

public class GameScoreUtilTest {
    @Test
    public void testCalculateResults() throws Exception {
        final Game game = new Game();

        final Player player1 = new Player();
        {
            final PlayedHole playedHole = new PlayedHole();
            playedHole.setScore(1);
            game.getHoleScoreMap().put(player1, playedHole);
        }
        {
            final PlayedHole playedHole = new PlayedHole();
            playedHole.setScore(3);
            game.getHoleScoreMap().put(player1, playedHole);
        }
        final GameResults gameResults = GameScoreUtil.calculateResults(game);

        assertEquals(4, gameResults.getScore());
    }
}

完整的堆栈跟踪看起来像这样......

!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!
    at junit.runner.BaseTestRunner.(BaseTestRunner.java:5)
    at junit.textui.TestRunner.(TestRunner.java:54)
    at junit.textui.TestRunner.(TestRunner.java:48)
    at junit.textui.TestRunner.(TestRunner.java:41)
    at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:152)
    at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:136)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)

Process finished with exit code -3

CrazyCoder.. 362

出现此问题是因为Android Platform(android.jar)已包含JUnit类.IDEA测试运行器加载这些类并看到它们来自旧的JUnit,而您尝试使用带注释的测试,这是新JUnit的一个功能,因此您从测试运行器获得错误.

解决方案很简单,打开Project Structure| Modules| Dependencies,并向上移动junit-4.7.jar,以便它在classpath 之前 Android 1.6 Platform.现在,测试运行器将在加载新的JUnit版本时感到高兴.



1> CrazyCoder..:

出现此问题是因为Android Platform(android.jar)已包含JUnit类.IDEA测试运行器加载这些类并看到它们来自旧的JUnit,而您尝试使用带注释的测试,这是新JUnit的一个功能,因此您从测试运行器获得错误.

解决方案很简单,打开Project Structure| Modules| Dependencies,并向上移动junit-4.7.jar,以便它在classpath 之前 Android 1.6 Platform.现在,测试运行器将在加载新的JUnit版本时感到高兴.


我有一个使用robolectric的gradle android项目,如下所述:http://www.peterfriese.de/android-testing-with-robolectric/当我在类路径中移动Android平台时,我得到以下异常:`找不到类:"com.example.intellijgradletest.MainActivityTest"`
只是为了让人们意识到这仍然是更高版本的android的一个问题.
在IDEA 14.0.3中,如果要更改依赖项顺序,则应使用箭头.拖放不起作用.
在android studio中,依赖文件是自动生成的.因此无法向上/向下移动.还有其他方法来解决这个问题吗?

2> alexey polus..:

在此输入图像描述

我的模块是一个java库模块,所以将JRE更改为1.8 java解决了这个问题.

或者,您也可以通过模块设置> SDK位置> JDK全局完成,指定Oracle的JDK 8而不是Android SDK的副本.



3> Uwe Post..:

我有一个多模块项目(libgdx)的问题.一个模块是纯Java并且有测试.我的解决方案是在我的单元测试的运行配置中将"使用替代JRE"设置为"Java 1.8".这确保了类路径上没有android.jar,并且使用了junit 4.x runner.



4> CallMeLaNN..:

既创造的时候,我得到了同样的错误Unit Test,并Android Instrument Test在Android Studio中1.4+,它开始变得混乱.要避免此错误,请确保您的测试类正在进行Android TestsRun/Debug Configurations

    请确保您正确遵循说明https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html

    确保Test ArtifactBuild Variants设置为Android Instrumentation Tests

    单击菜单Run>Edit Configuration

    确保您的类/方法名称在内部Android Tests而不是JUnit

    如果JUnit只是删除配置并右键单击要Run再次测试的文件.然后它将在Android Tests部分下创建配置,并在设备/模拟器上运行.


这适用于我=>如果它在JUnit中,只需删除配置并右键单击要测试的文件并再次运行.然后它将在Android Tests部分下创建配置,并在设备/模拟器上运行.

5> ZahiC..:

对于Android Studio - 从Android Studio 1.1 Beta 4开始,Google已添加对Android Gradle插件1.1.0-RC的支持.新插件使用junit 4+支持通过Android Studio进行单元测试.

这仍然是实验性的,并且有一些手动步骤来设置它.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有