2015-12-19 27 views
9

ile test ederken numaralı testte herhangi bir test bulunamadı Android uygulamamda MainActivity test etmek istiyorum. Bu yüzden, bir düğmenin işlevselliğini test eden ilk bir test vakası oluşturdum. Kullanıcı bu düğmeyi tıklarsa, yeni bir Etkinlik açılmalıdır. İşte Espresso

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) 

benim Gradle dosyası::

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

eksik (Gradle sürümü, gradle dosyası, vb gibi)? [Robolectric] (http://robolectric.org/) kullanmayı düşündünüz mü? – Schrieveslaach

+0

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

cevap

21

Set the instrumentation runner

, ben şu istisna olsun Maalesef

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

} 

: Burada

benim kodudur

android.defaultConfig aşağıdaki satırı dosya aynı build.gradle ekle: 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' 

    ... 
} 

ben Espresso Amaçları hiç kullanılmamış ama belki ihtiyacınız thishere gibi: yerine ActivityTestRule ait

Kullanım IntentsTestRule Espresso-Amaçları kullanarak. IntentsTestRule, fonksiyonel UI testlerinde Espresso Intents API'lerini kullanmayı kolaylaştırır. Bu sınıf, her test çalıştırmasından sonra Espresso-Intents 'u ilklendiren ve her test çalıştırmasından sonra Espresso-Intents 'u serbest bırakan, AktiviteTestRule eklentisidir. Etkinlik, her bir test 'dan sonra sonlandırılacak ve bu kural ActivityTestRule ile aynı şekilde kullanılabilir.

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

Eğer çevrenin biraz daha bilgi gönderebilir miyim