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?
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
@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