当我try 在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

推荐答案

发生此问题是因为Android平台(android.jar)已经包含JUnit类.IDEA测试运行器加载这些类,并发现它们来自旧的JUnit,而您试图使用带注释的测试(这是新JUnit的一个特性),因此您从测试运行器得到错误.

解决方案很简单,打开Project Structure | Modules | Dependencies,将junit-4.7.jar向上移动,使其在类路径中变成before Android 1.6 Platform.现在,测试运行程序将很高兴加载新的JUnit版本.

Java相关问答推荐

在applitcation.properties中找到的字符串中输入变量

如何让HikariCP指标在NewRelic中正确显示?

如何用javac编译Java类,即使对像java.lang.*这样的基本类也没有任何依赖关系?

在Java中将Charsequence数组更改为String数组或List String<>

Oracle DUAL表上使用DDL时jOOQ问题的解析'

JUnit—如何模拟局部变量对象方法调用

按属性值从流中筛选出重复项

如何在EXCEL单元格中添加形状和文本

每次FXMLLoader调用ApplationConext.getBean(类)时创建@Component的新实例

在添加AdMob时无法为Google Play构建应用程序包:JVM垃圾收集器崩溃和JVM内存耗尽

允许同时执行两个方法,但不能同时执行这两个方法

是否为计划任务补偿系统睡眠?

将stringBuilder + forloop转换为stream + map

对从Spring Boot 3.1.5升级到3.2.0的方法的查询验证失败

try 使用预准备语句占位符获取信息时出现Try-With-Resources错误

Java集合:NPE,即使没有添加空值

我们可以在方法中声明接口吗?

在WHILE()循环初始化部分中声明和初始化变量的Java语法?

整数->;双取消框,但双->;int不';t开箱.为什么?

使用StringBuilder和append方法创建字符串时Java字符串内部方法的问题