当我试图在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.<init>(BaseTestRunner.java:5)
    at junit.textui.TestRunner.<init>(TestRunner.java:54)
    at junit.textui.TestRunner.<init>(TestRunner.java:48)
    at junit.textui.TestRunner.<init>(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

当前回答

对于那些正在阅读这篇文章并且仍然对AndroidStudio 1.0有同样问题的人。你不能改变AndroidStudio的依赖顺序,IDE会自动重写它们。而且,即使您设法通过修改.iml文件来改变顺序,也会得到一个“class not found…”。这是因为测试输出路径不能在AndroidStudio上设置。

实际上,有一个解决方案可以让AndroidStudio、Junit和Robolectric一起工作。看看这个https://github.com/JCAndKSolutions/android-unit-test,并使用这个插件:https://github.com/evant/android-studio-unit-test-plugin

很适合我。

其他回答

如果你移除

testOptions {
    unitTests.returnDefaultValues = true
}

从你的身材。Gradle会起作用的

当我更新IDEA版本到2021.2.1时工作。

对我来说,这个问题是由过时/损坏的测试运行配置引起的。我只需要删除配置,然后创建一个新的配置,问题就解决了。

我在Android Studio 1.4+中创建单元测试和Android仪器测试时遇到了同样的错误,它开始变得混乱。为了避免这个错误,请确保你的测试类在运行/调试配置的Android测试下

Make sure you follow the instruction properly https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html Make sure Test Artifact in Build Variants is set to Android Instrumentation Tests Click menu Run > Edit Configuration Make sure your class/method name is inside Android Tests instead of JUnit If it is in JUnit simply delete the config and right click on the file you want to test and Run again. It will then create the config under Android Tests section and it run on device/emulator.

我在一个Java 11 Spring项目中遇到了同样的问题,结果是当我试图运行测试时,我放了错误的“缩短命令”选项。

使用“JAR清单”选项修复了这个问题。

IntelliJ缩短命令选项