1. ホーム
  2. java

[解決済み] IntelliJ IDEA with Junit 4.7 「!!!! JUnitバージョン3.8以降を期待:"

2022-01-29 01:24:01

質問

で以下のテストを実行しようとしたところ IntelliJ IDEA というメッセージが出ます。

"!!! JUnit バージョン 3.8 以降を期待:"

注意すべきは、これは アンドロイド プロジェクトは、IntelliJ IDEA 9で作業しています。

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 を上にして、それが Android 1.6 Platform をクラスパスに追加します。これで、テストランナーは新しいバージョンの JUnit をロードするようになり、満足することでしょう。