Ich versuche, mich mit der neuen Komponententestfunktion von Android Studio zu arrangieren.
Ich habe die Anweisungen auf Ссылка befolgt. Die dortige Beschreibung erwähnt ausdrücklich den Fehler "Methode ... nicht gespottet" und schlägt vor, Folgendes in build.gradle
:
Dies funktioniert insofern, als die Tests ausgeführt werden, wenn sie von der Befehlszeile mit
gestartet werden %Vor%aber nicht, wenn ich die Testklasse von Android Studio mit rightclick - & gt; Lauf. Auf diese Weise bekomme ich den gleichen Fehler erneut:
%Vor%Irgendwelche Ideen, wie man das löst?
EDIT: Der Inhalt der Testklasse spielt keine Rolle, da das Setup des Tests fehlschlägt. Ich habe es mit der einfachsten Klasse versucht:
%Vor%Es wurde auch versucht, setUp zu überschreiben, das macht keinen Unterschied.
Das neue Feature Unit Tests
in Android Studio täuscht das gesamte Android-SDK vor , sodass Sie schnelle Tests nur mit Java ausführen können, ohne dass Sie Ihre Anwendung auf einem Android-Gerät installieren müssen (ähnlich) zu Robolectric). Die allgemeine Idee ist, dass Sie alle Antworten aus den Android SDK-Aufrufen verspotten.
AndroidTestCase
wird verwendet, um einen Test mit dem echten Android SDK auszuführen.
Ihr Problem ist also, dass Sie versuchen, ein AndroidTestCase
auszuführen, das vom Android SDK abhängt, aber Ihr Test-Runner startet die Unit Tests
-Umgebung, die ein gefälschtes Android-SDK anstelle eines echten verwendet.
Sie müssen einen Ansatz wählen. Wenn Sie einen reinen Komponententest wünschen, sollten Sie wahrscheinlich eine JUnit 4-Testklasse anstelle eines AndroidTestCase verwenden. Weitere Anweisungen hier: Ссылка
Von: Ссылка
%Vor%Die android.jar-Datei, die zum Ausführen von Komponententests verwendet wird, enthält nicht jeden tatsächlichen Code - das wird von dem Android-System Bild auf real zur Verfügung gestellt Geräte. Stattdessen werfen alle Methoden Ausnahmen (standardmäßig). Das ist Stellen Sie sicher, dass Ihre Unit-Tests nur Ihren Code testen und nicht davon abhängen jedes bestimmte Verhalten der Android-Plattform (die Sie nicht haben explizit verspottet z.B. mit Mockito). Wenn das problematisch ist, du Sie können das folgende Snippet zu Ihrer build.gradle hinzufügen, um dies zu ändern Verhalten:
Ab der SDK-Version 24 ist AndroidTestCase veraltet
Diese Klasse wurde in API-Ebene 24 nicht weiter unterstützt.
Verwenden Sie stattdessen InstrumentationRegistry. Neue Tests sollten mit geschrieben werden die Android Testing Support-Bibliothek .
Sie sollten das Espresso-Framework für UI-Tests verwenden. Es gibt ein Tutorial .
Tags und Links android unit-testing android-studio