Gdy próbuję uruchomić następujący test w IntelliJ IDEA, pojawia się komunikat:
„!!! Oczekiwano JUnit w wersji 3.8 lub nowszej:”
Należy zauważyć, że jest to projekt na Androida , nad którym pracuję w 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());
}
}
Pełny ślad stosu wygląda następująco ...
!!! 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
java
android
junit
intellij-idea
benstpierre
źródło
źródło
Odpowiedzi:
Ten problem występuje, ponieważ platforma Android (
android.jar
) zawiera już klasy JUnit. Program testujący IDEA ładuje te klasy i widzi, że są one ze starego JUnit, podczas gdy próbujesz użyć testów z adnotacjami, które są cechą nowego JUnit, dlatego błąd uruchamia się z testera.Rozwiązanie jest proste, otwórz
Project Structure
|Modules
|Dependencies
i przesuń wjunit-4.7.jar
górę, aby pojawiła się wcześniejAndroid 1.6 Platform
w ścieżce klasy. Teraz biegacz testowy będzie szczęśliwy, gdy załaduje nową wersję JUnit.źródło
Class not found: "com.example.intellijgradletest.MainActivityTest"
mój moduł jest modułem biblioteki Java, więc zmiana JRE na 1.8 Java rozwiązała problem.
Możesz także zrobić to globalnie, wybierając Ustawienia modułu> Lokalizacja SDK> JDK, określając JDK 8 Oracle zamiast kopii zestawu SDK systemu Android.
źródło
~/Library/Preferences/AndroidStudioX.X/options/jdk.table.xml
lubC:\Users\Name\.AndroidStudioX.X\config\options\jdk.table.xml
w systemie Windows. Znajdź węzeł<name value="Android API 28 Platform" />
i ustaw go<annotationsPath>
na<root url="jar://$USER_HOME$/Android-SDK/platforms/android-28/data/annotations.zip!/" type="simple" />
. Upewnij się również, że<classPath>
węzeł zawieraplatforms/android-28/...
oba adresy URL ścieżek plików. Dostosuj „Android-SDK” do nazwy folderu.Miałem ten problem z projektem wielomodułowym (libgdx). Jeden moduł to czysta Java i ma testy. Moim rozwiązaniem było ustawienie „użyj alternatywnego środowiska JRE” na „Java 1.8” w konfiguracji uruchamiania moich testów jednostkowych. Dzięki temu nie ma pliku android.jar na ścieżce klasy i używany jest moduł uruchamiający junit 4.x.
źródło
Mam ten sam błąd przy tworzeniu zarówno
Unit Test
iAndroid Instrument Test
Android 1.4+ Studio i zaczął się mylić. Aby uniknąć tego błędu upewnij się, klasa test jest objęteAndroid Tests
naRun/Debug Configurations
Test Artifact
inBuild Variants
jest ustawiony naAndroid Instrumentation Tests
Run
>Edit Configuration
Android Tests
zamiastJUnit
JUnit
po prostu usuń konfigurację i kliknij prawym przyciskiem myszy plik, który chcesz przetestować, iRun
jeszcze raz. Następnie utworzy konfigurację wAndroid Tests
sekcji i będzie działać na urządzeniu / emulatorze.źródło
test
folderu doandroidTest
folderu. Android Studio nie zaktualizowało konfiguracji uruchamiania po wykonaniu tej czynnościDla Androida Studio - począwszy od Android Studio 1.1 Beta 4 , Google dodało obsługę wtyczki Android Gradle 1.1.0-RC . Nowa wtyczka obsługuje testy jednostkowe w Android Studio przy użyciu junit 4+.
Jest to nadal eksperymentalne i istnieją pewne ręczne kroki, aby to skonfigurować.
źródło
Dla wszystkich, którzy czytają ten post i nadal mają ten sam problem z AndroidStudio 1.0. Nie można zmienić kolejności zależności w AndroidStudio, ponieważ IDE ponownie je zapisuje automatycznie. I nawet jeśli uda ci się zmienić kolejność, modyfikując plik .iml, otrzymasz „klasę nie znaleziono ...”. Wynika to z faktu, że Ścieżka wyjściowa testu nie może być ustawiona w AndroidStudio.
W rzeczywistości istnieje rozwiązanie umożliwiające współpracę AndroidStudio, Junit i Robolectric. Spójrz na ten https://github.com/JCAndKSolutions/android-unit-test i użyj również tej wtyczki: https://github.com/evant/android-studio-unit-test-plugin
Działa dla mnie idealnie.
źródło
Ten sam błąd występuje podczas tworzenia własnego pakietu junit
Aby to naprawić, dodałem te dwa wiersze do pliku oceny aplikacji, jak to wyjaśniono tutaj :
źródło
Mogę sobie wyobrazić dwie rzeczy
źródło
Zdarzyło mi się to również w Android Studio 1.1 - chociaż powinno ono obsługiwać testy jednostkowe bez wtyczki.
Na innych komputerach (ten sam projekt, ta sama wersja AS) odkryłem, że podczas uruchamiania testów jednostkowych IDE nie dodaje pliku android.jar do ścieżki klas, podczas gdy na mojej maszynie tak jest.
Moje przypuszczenie było takie, że z powodu konwersji, którą zrobiliśmy z Maven na Gradle i przejścia z intellij do AS, pewna pamięć podręczna ustawień pozostała gdzieś na mojej maszynie, co spowodowało dodanie android.jar do ścieżki klas.
To, co zrobiłem, to wyczyszczenie wszystkich pamięci podręcznych związanych z Androidem z mojego komputera (w folderze c: \ users \ USRE_NAME): .android .AndroidStudio .gradle .m2
Następnie ponownie otworzyłem projekt i testy zadziałały.
Wciąż próbuję zrozumieć, co poszło nie tak, ale na razie powinno to wystarczyć.
źródło
Miałem ten problem w Android Studio 1.5, ponieważ nie wiedziałem, że muszę zmienić ustawienie „Artefakt testowy” w „Wariantach budowy” (lewy dolny róg głównego okna) z „Testów oprzyrządowania Androida” na „Testy jednostkowe” „. Gdy to zrobisz, możesz zobaczyć plik ExampleUnitTest.java w oknie projektu.
źródło
Miałem ten sam problem, ale z innego powodu. Byłem na IntelliJ z normalnym projektem klasy Java (nie na Androidzie), ale JDK ustawiono na Android SDK w
Project Structure
(z pewnych powodów był to domyślny JDK). To jest naprawdę głupie, ale IntelliJ nie był wystarczająco miły, aby wskazać mi, co jest nie tak, więc utknąłem na tym.źródło
Oto jak to rozwiązałem:
Edytuj konfiguracje -> Domyślne -> Android JUnit -> Dodaj następujące elementy do katalogu roboczego:
$ MODULE_DIR $
źródło
Dla mnie ten problem był spowodowany przez przestarzałą / uszkodzoną konfigurację uruchamiania testów. Po prostu musiałem usunąć konfigurację, a następnie utworzyć nową, a problem został rozwiązany.
źródło
W projekcie na Androida miałem
minifyEnabled = true
, po zmianie nafalse
wszystko działało.źródło
Jeśli usuniesz
od ciebie
build.gradle
to zadziałaźródło
Przejdź do Struktura projektu -> Ustawienia platformy, zmień SDK na 1.8, rozwiązałem mój problem.
źródło
Miałem również ten sam problem, po przejściu na build.gradle działa dla mnie dobrze.
zmień wersję junita w build.gradle na:
źródło
Postępowałem zgodnie z odpowiedzią CrazyCodera, ale nie było pliku junit pokazanego w zależnościach. więc pobrałem jeden z http://www.java2s.com/Code/Jar/j/Downloadjunitjar.htm , a następnie dodałem go, naciskając przycisk plus po prawej stronie. I zadziałało
źródło
Wyłączenie „Użyj osadzonego JDK” w strukturze projektu / lokalizacji pakietu SDK pomogło w moim przypadku, ale nie wiem dokładnie, co było przyczyną niepowodzenia.
źródło
Zamień plik android.jar w folderze libs na najnowszy. Możesz go pobrać stąd
źródło
W AndroidStudio
Open Project Structure -> SDK Location
możesz zobaczyćJDK
lokalizację, zmienić, użyć „Użyj wbudowanego JDK” ,JDK
aby zastosować, a następnie zmienić z powrotem na „Użyj osadzonego JDK” , może to działaćźródło
W moim przypadku zmiana
JRE
wRun Configurations
dawce rozwiązać ten problem, ale gdy klikam przycisk run obok funkcji testowego,JRE
opcje zostaną przywrócone do domyślnych.Wreszcie, podobnie jak odpowiedź @CrazyLiu, w
Project Structure - SDK Location - JDK
wybierzEmbedded JDK
. Ponieważ w Android Studio 3.6 nie ma pola wyboru.źródło
Dostałem tę samą wiadomość
przez prosty błąd początkującego. Użyłem tych samych nazw pakietów i nazw klas w src / main i src / test dla klasy (w moim przypadku klasa HomeController):
Dzięki temu klasa src / main HomeController, a także klasa src / test HomeController, miały tę samą pełną ścieżkę:
Wynik: wszystkie testy zależne od klasy HomeController nie powiodły się.
Zmiana nazwy pakietu i / lub nazwy klasy rozwiązało problem. Oto przykład, w którym zmieniono zarówno nazwę pakietu, jak i nazwę klasy:
Teraz w pełni kwalifikowane nazwy klas różnią się. Nazwa klasy src / main HomeController to:
a nazwa klasy HomeHontrollerTest src / test to:
Ponieważ w pełni kwalifikowane nazwy klas są unikalne, problem znika.
źródło