2015-12-19 23 views
9

Chcę przetestować mój MainActivity w mojej aplikacji Android. Stworzyłem więc pierwszy przypadek testowy, który testuje funkcjonalność przycisku. Jeśli użytkownik kliknie ten przycisk, powinna otworzyć się nowa aktywność.Brak testów w <package> podczas testów z Espresso

Oto mój kod:

@RunWith(AndroidJUnit4.class) 
public class MainActivityTest { 

    @Rule 
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(MainActivity.class); 

    @Test 
    public void startNewActivityTest() { 
     Intents.init(); 
     onView(withId(R.id.main_new)).perform(click()); 
     intended(hasComponent(NewActivity.class.getName())); 
     Intents.release(); 
    } 

    @Before 
    public void setup() { 
     closeSoftKeyboard(); 
    } 

} 

Niestety, pojawia się następujący wyjątek:

junit.framework.AssertionFailedError: No tests found in package.MainActivityTest 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701) 

Oto moja Gradle plik:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "23.0.1" 

    lintOptions { 
     abortOnError false 
    } 

    defaultConfig { 
     applicationId "package" 
     minSdkVersion 14 
     targetSdkVersion 19 
    } 

    signingConfigs { 
     debug { 
      storeFile file(RELEASE_STORE_FILE) 
      storePassword RELEASE_STORE_PASSWORD 
      keyAlias RELEASE_KEY_ALIAS 
      keyPassword RELEASE_KEY_PASSWORD 
     } 
     release { 
      storeFile file(RELEASE_STORE_FILE) 
      storePassword RELEASE_STORE_PASSWORD 
      keyAlias RELEASE_KEY_ALIAS 
      keyPassword RELEASE_KEY_PASSWORD 
     } 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_7 
     targetCompatibility JavaVersion.VERSION_1_7 
    } 
} 

dependencies { 
    compile 'com.android.support:support-v4:19.1.0' 
    compile 'com.google.android.gms:play-services:4.2.+' 
    androidTestCompile 'com.android.support:support-annotations:19.0.1' 
    androidTestCompile 'com.android.support.test:runner:0.4.1' 
    androidTestCompile 'com.android.support.test:rules:0.4.1' 
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' 
    // Set this dependency if you want to use Hamcrest matching 
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3' 
    androidTestCompile 'com.android.support.test.espresso:espresso-intents:2.2.1' 
} 
+0

można dodawać trochę więcej informacji o środowisku (jak w wersji Gradle Gradle pliku, itp)? Czy rozważałeś użycie [Robolectric] (http://robolectric.org/)? – Schrieveslaach

+0

prawdopodobnie https://github.com/googlesamples/android-testing/blob/master/ui/espresso/IntentsBasicSample/app/build.gradle#L13 – albodelu

Odpowiedz

21

Set the instrumentation runner

Dodaj do tego samego build.gradle pliku następującą linię w android.defaultConfig: testInstrumentationRunner „android.support.test.runner.AndroidJUnitRunner”

apply plugin: 'com.android.application' 

android { 
    ... 

    defaultConfig { 
     ... 

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

dependencies { 
    // App's dependencies, including test 
    compile 'com.android.support:support-annotations:23.0.1' 

    ... 
} 

nigdy nie użyłem Ekspresy intencjami, ale być może trzeba this jak here:

Zastosowanie IntentsTestRule zamiast ActivityTestRule podczas korzystania Ekspres intencjami. IntentsTestRule ułatwia korzystanie z interfejsów API espresso w testach funkcjonalnych interfejsu użytkownika. Ta klasa jest rozszerzeniem ActivityTestRule o numerze , który inicjuje Espresso-Intents przed każdym testem opatrzonym komentarzem @Test i po każdym uruchomieniu testowym wypuszcza Espresso-Intents . Działanie zostanie zakończone po każdym teście i ta reguła może być używana w taki sam sposób jak ActivityTestRule.

0
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

brakowało