6

Ich habe Probleme beim Importieren einiger Framework-Klassen für Android-UI-Tests - ich kann einfach nicht herausfinden, was schief läuft!Warum kann ich AndroidJUnit4 und ActivityTestRule nicht in meine Unit-Testklasse importieren?

Das ist meine Klasse:

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class ExampleUnitTest { 

@Rule 
public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class); 

@Test 
public void listGoesOverTheFold() { 
    onView(withText("Hello world!")).check(matches(isDisplayed())); 
} 

}

Aber aus irgendeinem Grund bekomme ich Fehler 'kann nicht Symbol ActivityTestRule finden' und 'nicht-Symbol AndroidJUnit4 finden'. Ich habe versucht, sie zu importieren, aber sie können nicht gefunden werden.

Die Abhängigkeiten in build.gradle gesetzt sind: - viele Dinge versucht, aber ohne Glück ich habe

compile fileTree(dir: 'libs', include: ['*.jar']) 
testCompile 'junit:junit:4.12' 
compile 'com.android.support:appcompat-v7:23.4.0' 
androidTestCompile 'com.android.support:support-annotations:23.4.0' 

androidTestCompile 'com.android.support.test:runner:0.4' 
androidTestCompile 'com.android.support.test:rules:0.4' 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' 
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' 

Also ich denke, ich alle Abhängigkeiten Setup haben.

Wer hat irgendwelche Ideen?

+0

Was Verzeichnis ist Ihre Testklasse in - 'Test/java' oder' androidTest/java'? – Jahnold

+0

Es ist im Test/Java – Hallupa

Antwort

18

Es gibt zwei verschiedene Arten von Tests, die Sie

in Android einrichten können

Einheit Tests

  • Diese direkt auf der JVM laufen und haben keinen Zugriff auf den Android Framework-Klassen.
  • Sie sind in der test/java Paket gehalten
  • Abhängigkeiten müssen verwenden Mockito, mit dem Befehl in der build.gradle-Datei hinzugefügt testCompile
  • Sie im Allgemeinen Robolectric & JUnit für diese Tests

Instrumentation Tests

  • Diese laufen auf einem Android-Emulator und haben voll Zugang zu allen Android Klassen
  • Sie im androidTest/java Paket
  • Abhängigkeiten gehalten werden müssen mit androidTestCompile für diese Tests
  • Sie verwenden in der Regel Espresso und JUnit build.gradle hinzugefügt werden

Von dem, was Ich kann Ihnen sagen, dass Sie versuchen, Instrumentierungstests mit Espresso zu schreiben, aber Ihren Test im test/java Paket haben, das für Komponententests ist. In diesem Fall müssen Sie Ihre Testklasse in das Paket androidTest/java verschieben.

+0

Danke, das ist es gelöst! Ich wusste nicht, dass es einen Unterschied zwischen test/java und androidTest/java gab – Hallupa

4

diese Abhängigkeiten hinzufügen müssen

testCompile 'com.android.support.test:rules:0.5' 
testCompile 'com.android.support.test:runner:0.5' 
Verwandte Themen