2015-03-20 5 views
20

Mein Android Studio-Projekt hat ein App-Modul, das Android-Framework abhängig ist, habe ich ein neues Modul namens Domäne erstellt und es enthält nur reine Java-Klassen und ein paar Test-Klassen.!!! JUnit Version 3.8 oder später erwartet

In diesem build.gradle Datei des Moduls, ich habe junit und Mockito Bibliotheken für Testzwecke wie folgt hinzugefügt:

apply plugin: 'java' 
sourceCompatibility = 1.7 
targetCompatibility = 1.7 
dependencies { 
    testCompile 'junit:junit:4.11' 
    testCompile 'org.mockito:mockito-core:1.9.5' 
    compile project(':common') 
    compile project(':model') 
    //test dependencies 
} 

Aber Android Studio gibt mir !!! JUnit version 3.8 or later expected Fehlermeldung, wenn ich versuche, die Test-Klasse auszuführen.

Alle vorgeschlagenen Lösungen für dieses Problem ist das Öffnen der Projektstruktur | Module | Abhängigkeiten, und verschieben Sie die Junit-4.7.jar, so dass es vor Android 1.6 Plattform im Klassenpfad kommt.

In der Tat habe ich versucht, diese Lösung zu implementieren, aber das Problem besteht immer noch. Image of my dependencies structure

Haben Sie eine Idee, wie Sie dieses Problem lösen können?

+1

Wie sieht Ihre Run/Debug-Konfiguration für Ihre Tests aus? Insbesondere, was bedeutet die Eigenschaft "Klassenpfad des Moduls verwenden" für Ihre Tests? Sie können dies in _Run_ -> _Edit-Konfigurationen_ finden und dann links eine Konfiguration auswählen. –

+0

Veröffentlichen Sie Ihre 'build.gradle'. –

+0

Ich könnte es lösen, indem Sie "unitTest.returnDefaultValues" entfernen, überprüfen Sie: https://Stackoverflow.com/a/44820309/965569 – Chiara

Antwort

-6

habe ich es geschafft, indem die folgenden in .iml Datei

aus, das Problem durch zu lösen:

<component name="NewModuleRootManager" inherit-compiler-output="true"> 

zu:

<orderEntry type="inheritedJdk" /> 
+0

Dies macht keinen Sinn. Dies sind verschiedene Tags. geht innerhalb . – elliptic1

+0

Dies ist keine gute Vorgehensweise, da der Endbenutzer Ihres Projekts Ihr Projekt importieren kann und Intellij das * neu erstellt.IMI-Datei. –

+0

Auf meiner Seite gefunden, dass das Problem im Cache Referenzen für ältere Abhängigkeiten ist und in diesem Fall führt diese Lösung andere Kollegen Entwickler zu Anti-Patterns, das ist besonders schlecht, wenn der Entwickler seine Reise folgenden Posts wie folgt beginnt. Ändern Sie nicht die * .iml, es ist irgendwo in der offiziellen Intellij Dokumentation –

8

Ich habe es geschafft, es zu lösen mit einfach Bearbeiten der Projekt-IMI und Umzug Reihenfolge Enrty für Junit, in meinem Fall:

<orderEntry type="library" exported="" scope="TEST" name="junit-4.13-SNAPSHOT" level="project" /> 

bis die erste orderEntry nach </content>

+0

Das Problem nicht für mich beheben. – ckp

38

Ich habe das gerade jetzt gelöst. Es kann dir helfen ... vielleicht. Eine kleine Anleitung:

  1. Zum Ausführen -> Bearbeiten Konfigurationen
  2. löschen JUnit-Konfiguration auf dem linken Panel

enter image description here

+0

Es funktioniert für mich. Wahrscheinlich sauberer unerwünschter Cache. – Paulo

+0

Aber nachdem Sie die Unbenannte JUnit-Konfiguration löschen, was führen Sie für (J) Unit Test? –

+1

Das funktionierte für mich, scheint üblich zu sein, wenn Sie Android und beide Komponententests verwenden. – alxsimo

0

ich dies hatte aber der Grund war different..I hatte habe versehentlich meine Build-Variante auf Release gesetzt und keine Signatur-Informationen angegeben, so dass nichts auf dem Gerät erstellt und ausgeführt werden konnte.

Der kryptische Fehler, den es mir gab, war der gleiche, als ich versuchte, die Integrationstests auszuführen ... bemerkte nicht, dass die App auch deaktiviert wurde :-P Setze es zurück auf Debug und es funktionierte gut.

Verwandte Themen