2017-12-25 234 views
7

AndroidTest'imi çalıştırmayla ilgili bir sorunum var. İşte Sınıf bulunamadı, AndroidTest ile test yap AndroidTest kullanarak test et 3.0.1, Oda, Kotlin

gradle benim kurgusunda:

apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 
apply plugin: 'kotlin-android-extensions' 
apply plugin: 'kotlin-kapt' 

android { 
compileSdkVersion 26 
defaultConfig { 
    applicationId "com.blabla.shoppinglistapp" 
    minSdkVersion 17 
    targetSdkVersion 26 
    versionCode 1 
    versionName "1.0" 
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
} 
buildTypes { 
    release { 
     minifyEnabled false 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
} 

ext.daggerVersion = '2.11' 
ext.roomVersion = '1.0.0' 
ext.mockitoVersion = '2.11.0' 

dependencies { 
implementation fileTree(dir: 'libs', include: ['*.jar']) 
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 
implementation 'com.android.support:appcompat-v7:26.1.0' 
implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
implementation 'com.android.support:design:26.1.0' 
implementation 'com.android.support:recyclerview-v7:26.1.0' 

testImplementation 'junit:junit:4.12' 
testImplementation 'org.mockito:mockito-android:2.8.47' 

androidTestImplementation 'com.android.support.test:runner:1.0.1' 
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 

// ViewModel and LiveData 
implementation "android.arch.lifecycle:extensions:1.0.0" 
annotationProcessor "android.arch.lifecycle:compiler:1.0.0" 

// RxJava 
implementation 'io.reactivex.rxjava2:rxjava:2.1.5' 
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' 
implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0' 

// Room 
implementation "android.arch.persistence.room:runtime:$roomVersion" 
implementation "android.arch.persistence.room:rxjava2:$roomVersion" 
kapt "android.arch.persistence.room:compiler:$roomVersion" 
implementation "org.jetbrains.kotlin:kotlin-stdlib:1.2.10" 
androidTestImplementation "android.arch.persistence.room:testing:$roomVersion" 

// Gson 
implementation 'com.google.code.gson:gson:2.8.2' 
} 

Ve burada testi (burada neredeyse hiçbir şey) 'dir:

: i bu olsun testi çalıştırmak çalıştığınızda

@RunWith(AndroidJUnit4::class) 
class ShoppingListDaoTest { 
@Test 
fun useAppContext() { 
    // Context of the app under test. 
    val appContext = InstrumentationRegistry.getTargetContext() 
    assertEquals("com.blabla.shoppinglistapp", appContext.packageName) 
} 

private lateinit var database: ShoppingListDatabase 

@Before 
fun initDb() { 
    // using an in-memory database because the information stored here disappears after test 
    database = Room.inMemoryDatabaseBuilder(InstrumentationRegistry.getContext(), 
      ShoppingListDatabase::class.java) 
      // allowing main thread queries, just for testing 
      .allowMainThreadQueries() 
      .build() 
} 

@After 
fun closeDb() { 
    database.close() 
} 


@Test fun testGetActiveShoppingListWhenNoActiveShoppingListInserted() { 
    database.shoppingListDao().getActiveShoppingLists() 
      .test() 
      .assertNoValues() 
} 


} 

Ve UPDATE

Gerçekten çok kötü bir şey farkettim. i Android Studio'da yeni bir proje başladı ve varsayılan çalıştırmayı denediğinizde androidTest bana bilinen hata veriyor :

Bunun workround gradle.properties Bu satırı eklemektir

Error:Gradle: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

:

android.enableAapt2=false

Bu özgün projemde daha önce yaptığım adımlar (bu hataya da rastladım). Ne yazık ki, bundan sonra sorumu bana verdi. Yani bu işi yapmak için aute2 ile isse'nin nasıl çözüleceği meselesidir. Ayrıca bkz: AAPT2 error: check logs for details, after workround the androidTest not working

Herhangi bir fikir?

cevap

6

Ben de aynı problemi yaşadım. Her bir test veya test dersini çalıştırmayı denediğimde, "Empty Test Suite" hatası aldım. Bu Android Studio'da bir hata gibi görünüyor.

Bunun yerine, androidTest paketini sağ tıklatın ve "Çalıştır" Testleri ... "seçeneğini tıklatın. Çalışması için tek yol bu.

Nezaket: The codelab guys

+0

bu Bir test üzerine değil sağ tıklayıp can ve çalıştırın, ancak sağ üst klasörü tıklayabilirsiniz ... Bu nasıl bir (yanıt için teşekkürler) çalıştığını saçma ve çalıştırın .... Ben android için yeni ama test çok bozuk görünüyor .... – jacoballenwood

+0

@jacoballenwood Ya kotlin kırık. Testlerinizi Java'da yazıyorsanız, mükemmel çalışır. Ama şimdi yaz, takım Kotlin'i tam olarak desteklemiyor. Umarım yakında tamir ederler. – Henry