ApplicationTestCase deprecated in API-level 24
Erstellte ich einen leeren Standard-Projekt auf Android Studio 2.1.2 mit API 24. Im Beispiel-Projekt, bietet Google abgeschrieben Klasse ApplicationTestCase:
Diese Klasse wurde als veraltet markiert in der API-Ebene 24. Verwenden ActivityTestRule
statt. Neue Prüfungen werden geschrieben, mit der Android-Testing-Support
Bibliothek.
Beispiel:
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
Meine Frage: Warum Android-Test-Fall ist jetzt veraltet? Wie ersetzen ApplicationTestCase von ActivityTestRule?
EDIT:
Ich versuche mit Expresso, aber auf API 24 (compileSdkVersion 24
) habe ich diese Fehlermeldung:
Error:Conflict with dependency 'com.android.support:appcompat-v7'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Error:Conflict with dependency 'com.android.support:design'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Error:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Error:Conflict with dependency 'com.android.support:recyclerview-v7'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Wenn ich versuche, fügen Sie diese lib in mein build.gradle:
//Android JUnit Runner
androidTestCompile 'com.android.support.test:runner:0.5'
//JUnit4 Rules
androidTestCompile 'com.android.support.test:rules:0.5'
//Espresso core
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
//Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'
//Espresso-web for WebView support
androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2'
//Espresso-idling-resource for synchronization with background jobs
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
Mein Fazit ist, dass im moment weder Android-Test-Fall - noch Expresso funktioniert auf Android-API 24. Ist das richtig?
EDIT: 2016-08-05
Ich fix vorherigen Fehler auf Expresso so:
def espressoVersion = '2.2.2'
def testRunnerVersion = '0.5'
androidTestCompile "com.android.support.test:rules:${testRunnerVersion}"
androidTestCompile "com.android.support.test.espresso:espresso-core:${espressoVersion}"
configurations.androidTestCompile.dependencies.each { androidTestCompileDependency ->
androidTestCompileDependency.exclude group: 'com.android.support'
}
- googeln "android-espresso"
- Ich kann nicht finden, ein tutorial, Api 24
- Bezüglich der Abhängigkeit-Konflikt Fehler finden Sie unter: diese Antwort
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den neuen androidTest Beispiel, dass die beta-version von Android Studio 2.2 generiert, die wie folgt Aussehen:
Genau wie die deprecation Warnung schlägt vor, die neue instrumentation tests verwenden soll
InstrumentationRegistry
statt, die sich vonAndroidTestCase
. Laufen Sie mitAndroidJUnit4
.Relevanten
dependencies
Abschnitt inbuild.gradle
sieht wie folgt aus:ApplicationTestCase
? Es behandelt die app-setup und teardown zwischen jedem test der Fall.@Before
und@After
von JUnit und führen Sie den setup/teardown Aktionen gibt.Application
Instanz jedes mal, ohne zu lecken, widersprüchliche und nachdem die Instanz erstellt, die test durchcontext.getApplicationContext()
wo erforderlich, innerhalb der app?Wie in der API-Dokumentation die API veraltet ist und stattdessen der InstrumentationRegistry.getTargetContext() wird wiederum Aufruf onCreate-Methode der Application-Klasse.
Den getTargetContext rufen die ApplicationStartupService Klasse definiert, die im Android-Manifest als unten.
https://developer.android.com/reference/android/test/ApplicationTestCase