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 버전을로드하므로 만족할 것입니다.junit-4.7.jar
Android 1.6 Platform
답변
내 모듈은 Java 라이브러리 모듈이므로 JRE를 1.8 java로 변경하면 문제가 해결되었습니다.
또는 Android SDK 사본 대신 Oracle의 JDK 8을 지정하여 모듈 설정> SDK 위치> JDK를 통해 전역 적으로 수행 할 수도 있습니다.
답변
다중 모듈 프로젝트 (libgdx) 에서이 문제가 발생했습니다. 하나의 모듈은 순수 Java이며 테스트가 있습니다. 내 솔루션은 단위 테스트 실행 구성에서 “대체 JRE 사용”을 “Java 1.8″로 설정하는 것이 었습니다. 이렇게하면 클래스 경로에 android.jar이없고 junit 4.x 러너가 사용됩니다.
답변
나는 모두를 만들 때 같은 오류가 발생했습니다 Unit Test
및 Android Instrument Test
안드로이드 스튜디오 1.4과는 혼동하기 시작. 이 오류 방지하려면 반드시 테스트 클래스에 해당되는 메이크업을 Android Tests
에Run/Debug Configurations
- https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html 의 지침을 올바르게 따르십시오.
- 확인
Test Artifact
에서이Build Variants
설정되어Android Instrumentation Tests
- 메뉴
Run
>를 클릭하십시오Edit Configuration
- 클래스 / 메서드 이름이
Android Tests
아닌 내부에 있는지 확인하십시오JUnit
- 이 글은 경우
JUnit
단순히 테스트하고 원하는 파일에 대한 설정 및 마우스 오른쪽 버튼으로 클릭 삭제Run
다시합니다. 그런 다음Android Tests
섹션 아래에 구성을 만들고 장치 / 에뮬레이터에서 실행합니다.
답변
Android Studio 1.1 Beta 4 부터 Android Studio를 위해 Google은 Android Gradle 플러그인 1.1.0-RC에 대한 지원을 추가했습니다 . 새 플러그인은 junit 4 이상을 사용하는 Android Studio를 통한 단위 테스트를 지원합니다.
이것은 아직 실험 단계 이며 이를 설정하기위한 몇 가지 수동 단계 가 있습니다.
답변
이 게시물을 읽고 여전히 AndroidStudio 1.0과 동일한 문제가있는 모든 사람에게 적합합니다. AndroidStudio에서는 종속성 순서를 변경할 수 없으며 IDE에서 자동으로 다시 작성합니다. 그리고 .iml 파일을 수정하여 순서를 변경하더라도 “클래스를 찾을 수 없습니다 …”가 표시됩니다. 테스트 출력 경로를 AndroidStudio에서 설정할 수 없기 때문입니다.
실제로 AndroidStudio, Junit 및 Robolectric을 함께 작동시키는 솔루션이 있습니다. 이 https://github.com/JCAndKSolutions/android-unit-test 를 보고이 플러그인도 사용하십시오 : https://github.com/evant/android-studio-unit-test-plugin
나를 위해 완벽하게 작동합니다.
답변
내 junit 패키지를 만들 때 같은 오류가 발생했습니다.
이 문제를 해결하기 위해 여기 설명 된대로 앱 gradle 파일 에이 두 줄을 추가했습니다 .
dependencies {
...
// Required -- JUnit 4 framework
testCompile 'junit:junit:4.12'
// Optional -- Mockito framework
testCompile 'org.mockito:mockito-core:1.10.19'
}