2014-12-22 5 views
6

Ho ricevuto un avviso strano Method annotated with @Test inside class extending junit3 testcase quando utilizzavo la nuova classe ActivityInstrumentationTestCase2 fornita con Espresso 2.0.Espresso 2.0 - Metodo annotato con @Test all'interno della classe estendentesi jcase3 testcase

La mia classe sembra proprio come quella che Google fornito come esempio:

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(); 
    } 
} 

ho aggiunto tutte le cose necessarie alla build.gradle:

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' 
} 

C'è un modo per togliere questo avviso?

+0

stai usando queste istruzioni https://code.google.com/p/android-test-kit/wiki/EspressoSetupInstructions – helleye

+0

Sì ho usato li – Niklas

+0

Quindi nel tuo build. gradle hai anche '// dipendenze dell'app, incluso il test compile 'com.android.support:support-annotations:21.0.3' ' – helleye

risposta

16

ActivityInstrumentationTestCase2 è un caso di test JUnit 3 poiché si estende da TestCase.

@Test annotazione è un sostituto per la convenzione di denominazione prova prefisso usato in JUnit JUnit 3. 4 classi di test non necessitano più di estendere TestCase o una delle sue sottoclassi. Infatti, i test JUnit 4 non possono estendere TestCase, altrimenti AndroidJUnitRunner li tratterà come test di JUnit 3.

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

Si può migrare per ActivityTestRule fornito da com.android.support.test:rules:0.4 (o successiva) o bastone con JUnit 3.

Un'altra opzione è InstrumentationRegistry, fornito da Espresso 2, che ha getInstrumentation(), getContext(), getTargetContext() (e altro). Questi metodi forniscono accesso alla strumentazione corrente, al contesto di test e al contesto di destinazione in modo statico. Ciò rende possibile scrivere i propri metodi di utilità statica per l'uso in classi di test case JUnit 4. Queste utility simulerebbero la funzionalità che è attualmente disponibile solo nelle classi di casi di test JUnit 3 di base. (Questo non è più necessario.)

+1

Mi sono confuso ... Nella AndroidJUnitRunnerUserGuide hanno un esempio di come lavorare con ActivityInstrumentationTestCase2 e JUnit4. in realtà è l'unica cosa che ho trovato quando ho cercato Junit4 e Android. Tu dici che ActivityInstrumentationTestCase2 è JUnit3, ho capito. Ma la Guida per l'utente dice che può essere usato per JUnit4. In realtà ho un esempio che è esattamente uguale a quello nella Guida dell'utente e mi dà l'avvertimento. Inoltre, quando provo a eseguirlo, si dice "Empty Test Suite" –

+0

Tutti i link 'googlecode' sono ora interrotti. –

+0

Grazie per aver detto che aggiornerò i collegamenti. –