2017-12-25 13 views
7

Ich habe ein Problem mit meinem AndroidTest.Klasse nicht gefunden, Leere Testsuite in androidTest mit Android Studio 3.0.1, Zimmer, Kotlin

Hier ist mein Setup in gradle:

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

Und hier ist der Test (fast nichts hier):

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


} 

Wenn ich versuche, den Test ich das bekommen laufen:

Process finished with exit code 1 Class not found: "com.blabla.shoppinglistapp.ShoppingListDaoTest"Empty test suite.

Und es beginnt nicht

UPDATE

Ich bemerkte einige wirklich schlechte Sache. Wenn ich neues Projekt im Android Studio und versuchen gestartet Standard zu laufen androidTest es gibt mir bekannten Fehler:

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

Die workround dafür, diese Linie zu gradle.properties hinzuzufügen ist: Diese

android.enableAapt2=false

sind die Schritte, die ich in meinem ursprünglichen Projekt zuvor ausgeführt habe (ich habe diesen Fehler ebenfalls gefunden). Leider gibts danach den Fehler von meiner Frage. So ist es wirklich die Frage, wie man die ISSE mit dem aapt2 löst, um diese Arbeit zu machen. Siehe auch hier: AAPT2 error: check logs for details, after workround the androidTest not working

Irgendeine Idee?

Antwort

6

Ich hatte auch das gleiche Problem. Wann immer ich versuchte, die einzelnen Test- oder Testklassen zu starten, bekam ich immer den Fehler "Empty Test Suite". Es scheint, dass dies ein Fehler in Android Studio ist.

Klicken Sie stattdessen mit der rechten Maustaste auf das Paket androidTest und klicken Sie auf "Tests in ... ausführen". Nur so kann ich es zum Laufen bringen.

Courtesy: The codelab guys

+0

das ist irgendwie lächerlich, dass dies funktioniert (danke für die Antwort) ... Sie können nicht Rechtsklick auf einen Test und führen Sie es, aber Sie können einen Rechtsklick auf den übergeordneten Ordner und rennen Sie es .... Ich bin neu in Android, aber die Prüfung scheint so gebrochen .... – jacoballenwood

+0

@jacoballenwood Ya ist es in Kotlin gebrochen. Wenn Sie Ihre Tests in Java schreiben, funktioniert es perfekt. Aber schreiben Sie jetzt, das Werkzeug unterstützt Kotlin nicht vollständig. Ich hoffe, sie reparieren es bald. – Henry

Verwandte Themen