Когда я пытаюсь запустить следующий тест в ИДЕЕ IntelliJ, я получаю сообщение:
"!!! Версия 3.8 JUnit или позже ожидаемый":
Нужно отметить, что это - проект Android, я продолжаю работать в ИДЕЕ IntelliJ 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.(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
Эта проблема возникает потому, что платформа Android (android.jar
) уже содержит классы JUnit. Программа запуска тестов IDEA загружает эти классы и видит, что они принадлежат старому JUnit, в то время как вы пытаетесь использовать аннотированные тесты, которые являются особенностью нового JUnit, поэтому вы получаете ошибку от программы запуска тестов.
Решение простое, откройте Project Structure
| Modules
| Dependencies
, и переместите junit-4.7.jar
вверх, так чтобы он оказался перед Android 1.6 Platform
в classpath. Теперь программа запуска тестов будет счастлива, поскольку загрузит новую версию JUnit.
Я могу представить, что могут произойти две вещи