2014-12-22 2 views
6

Ich habe eine seltsame Warnung Method annotated with @Test inside class extending junit3 testcase bei Verwendung der neuen ActivityInstrumentationTestCase2 Klasse mit Espresso 2.0 ausgeliefert.Espresso 2.0 - Methode mit @Test in der Klasse erweitert Junit3 Testfall

Meine Klasse sieht genauso aus wie die, dass Google als Beispiel bereitgestellt:

import android.support.test.InstrumentationRegistry; 
import android.support.test.runner.AndroidJUnit4; 
import android.test.ActivityInstrumentationTestCase2; 
import android.test.suitebuilder.annotation.LargeTest; 

import org.junit.After; 
import org.junit.Before; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

import static android.support.test.espresso.matcher.ViewMatchers.assertThat; 
import static org.hamcrest.Matchers.notNullValue; 

@RunWith(AndroidJUnit4.class) 
@LargeTest 
public class MyCoolActivityTests extends ActivityInstrumentationTestCase2<MyCoolActivity> { 

    private MyCoolActivity mActivity; 

    public MyCoolActivityTests() { 
     super(MyCoolActivity.class); 
    } 

    @Before 
    public void setUp() throws Exception { 
     super.setUp(); 
     injectInstrumentation(InstrumentationRegistry.getInstrumentation()); 
     mActivity = getActivity(); 
    } 

    @Test 
    public void checkPreconditions() { 
     assertThat(mActivity, notNullValue()); 
     // Check that Instrumentation was correctly injected in setUp() 
     assertThat(getInstrumentation(), notNullValue()); 
    } 

    @After 
    public void tearDown() throws Exception { 
     super.tearDown(); 
    } 
} 

ich alle notwendigen Dinge zum build.gradle hinzugefügt haben:

android { 
    defaultConfig { 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
} 

dependencies { 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' 
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1' 
} 

Gibt es eine Möglichkeit zu Holen Sie diese Warnung weg?

+0

verwenden Sie diese Anweisungen https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions – helleye

+0

Ja habe ich sie verwendet – Niklas

+0

Also in Ihrem Build. Grapple haben Sie auch '//App-Abhängigkeiten, einschließlich Test kompilieren 'com.android.support:support-annotations:21.0.3' ' – helleye

Antwort

16

ActivityInstrumentationTestCase2 ist ein JUnit 3 Testfall, weil es von TestCase reicht.

@Test Annotation ist ein Ersatz für den Test-Präfixbenennungskontext in JUnit 3. Klassen JUnit 4 Test verwendete Konvention nicht mehr benötigen Testcase oder eine ihrer Unterklassen zu erweitern. Tatsächlich können JUnit 4-Tests TestCase nicht erweitern, da AndroidJUnitRunner sie sonst als JUnit 3-Tests behandelt.

http://developer.android.com/tools/testing-support-library/index.html#AndroidJUnitRunner

Sie entweder zu ActivityTestRule von com.android.support.test:rules:0.4 (oder höher) zur Verfügung gestellt wandern könnten, oder Stick mit JUnit 3.

Eine weitere Option ist InstrumentationRegistry, zur Verfügung gestellt von Espresso 2, die getInstrumentation() hat, getContext(), getTargetContext() (und mehr). Diese Methoden bieten einen statischen Zugriff auf die aktuelle Instrumentierung, den Testkontext und den Zielkontext. Dies ermöglicht es, eigene statische Utility-Methoden für die Verwendung in JUnit 4 Testfall-Klassen zu schreiben. Diese Dienstprogramme würden Funktionen nachahmen, die derzeit nur in den Basis-JUnit 3-Testfallklassen verfügbar sind. (Dies ist nicht mehr notwendig.)

+1

Ich habe verwirrt ... In der AndroidJUnitRunnerUserGuide haben sie ein Beispiel, wie man mit ActivityInstrumentationTestCase2 und JUnit4 arbeiten. eigentlich ist es das einzige, was ich bei der Suche nach Junit4 und Android gefunden habe. Sie sagen ActivityInstrumentationTestCase2 ist JUnit3, ich verstehe es. Aber das Benutzerhandbuch sagt, dass es für JUnit4 verwendet werden kann. Ich habe tatsächlich ein Beispiel, das genau das gleiche wie das im Benutzerhandbuch ist und es gibt mir eine Warnung. Außerdem, wenn ich versuche, es zu starten, heißt es "Empty Test Suite" –

+0

Alle 'googlecode' Links sind jetzt kaputt. –

+0

Danke für die Erwähnung, dass ich die Links aktualisieren werde. –