Gibt es eine Anmerkung oder eine andere bequeme Möglichkeit, Junit-Tests für bestimmte Android SDK-Versionen zu ignorieren? Gibt es etwas Ähnliches wie die Lint Annotation TargetApi (x)? Oder muss ich manuell überprüfen, ob der Test mit Build.VERSION ausgeführt wird?Ignorieren von Android-Komponententests abhängig von der SDK-Ebene
Antwort
Ich glaube nicht, dass etwas bereit ist, aber es ist ziemlich einfach, eine benutzerdefinierte Annotation dafür zu erstellen.
Erstellen Sie Ihre benutzerdefinierte Anmerkung
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TargetApi {
int value();
}
Ovverride der Testläufer (dh den Wert überprüfen und eventuell ignorieren/Feuer der Test)
public class ConditionalTestRunner extends BlockJUnit4ClassRunner {
public ConditionalTestRunner(Class klass) throws InitializationError {
super(klass);
}
@Override
public void runChild(FrameworkMethod method, RunNotifier notifier) {
TargetApi condition = method.getAnnotation(TargetApi.class);
if(condition.value() > 10) {
notifier.fireTestIgnored(describeChild(method));
} else {
super.runChild(method, notifier);
}
}
}
und markieren Sie Ihre Tests
@RunWith(ConditionalTestRunner.class)
public class TestClass {
@Test
@TargetApi(6)
public void testMethodThatRunsConditionally() {
System.out.print("Test me!");
}
}
Nur getestet, es funktioniert für mich. :)
Credits: Conditionally ignoring JUnit tests
Ich habe auf diese Frage eine Antwort gesucht und haben keinen besseren Weg, als überprüfen Sie die Version gefunden. Ich konnte die Ausführung der Testlogik bedingt unterdrücken, indem ich die folgenden Android TestCase
Methoden eincheckte. Dies verhindert jedoch nicht die Ausführung der einzelnen Tests. Das Überschreiben der runTest()
-Methode wie dieser führt dazu, dass Tests auf API-Ebenen "bestanden" werden, von denen Sie wissen, dass sie nicht funktionieren. Abhängig von Ihrer Testlogik möchten Sie möglicherweise auch tearDown()
überschreiben. Vielleicht wird jemand eine bessere Lösung anbieten.
- 1. abhängig von der YVAL-Variable
- 2. Ändern der Sichtbarkeit von Formularen abhängig von der gewählten Option
- 3. Ignorieren der Rücktaste von der Standardeingabe
- 4. Abhängig von zwei Versprechen
- 5. Ändern Einschränkungen abhängig von der Bildschirmgröße
- 6. AngularJS-Vorlage abhängig von der Eigenschaft
- 7. jQuery ändern Geschwindigkeit abhängig von der Entfernung
- 8. Rand abhängig von Anzahl der Elemente
- 9. Einschließlich PHP abhängig von der Bildschirmbreite Größe
- 10. Sind sbt-Bibliotheksabhängigkeiten von der Reihenfolge abhängig?
- 11. Excel Zufallszahlen abhängig von der Woche
- 12. UITableViewCell - unterschiedliches Verhalten abhängig von der Touchdauer?
- 13. sed: Verbindungslinien abhängig von der zweiten
- 14. C++ - Programmverhalten abhängig von der Quellcodedatei
- 15. Drop-Down-Funktion Abhängig von der Ausrichtung
- 16. Warum Position ändern abhängig von der Opazität
- 17. Ersetzen von Stylesheets mit jQuery abhängig von der Bildschirmgröße
- 18. Ignorieren von in der Warteschlange eingereihten Mausereignissen
- 19. Ignorieren von SYN/ACK
- 20. entpacken von Dateien abhängig von while-Schleife
- 21. Diff Ignorieren von GUIDs
- 22. Vervielfältigung von Storyboard-Ansichten abhängig von Kontoinformationen
- 23. Hinzufügen von Steuerelementen abhängig von SQL-Tabelle?
- 24. Ignorieren von Bindestrichen absichtlich
- 25. iPhone kompilieren abhängig von Ziel
- 26. Include-Dateien abhängig von Ziel
- 27. Ausgabe von subprocess.Popen ignorieren
- 28. Ignorieren von "-" in Tcl
- 29. Goobbots Ignorieren von robots.txt?
- 30. Abhängigkeitseigenschaft abhängig von einer anderen
Sieht wie eine schöne Lösung aus, aber wie erhalten Sie JUnit 4, um mit Android zu arbeiten? –
Ich glaube nicht, dass es ein Problem ohne eine Junit-Version gibt, Sie haben schließlich den Test-Runner geändert, denke ich. Welche Version verwenden Sie? – Enrichman
Ich denke, es ist JUnit 3.8. Android-Testtools unterstützen JUnit 4 nicht: http://developer.android.com/tools/testing/testing_android.html –