类未find,androidTest中使用Android Studio 3.0.1,Room,Kotlin的空测试套件

我有一个运行我的androidTest的问题。

这是我在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' } 

这里是测试(几乎没有在这里):

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

当我尝试运行测试时,我得到这个:

处理完成退出代码1类未find:“com.blabla.shoppinglistapp.ShoppingListDaoTest”空的测试套件。

而且这不是开始

UPDATE

我注意到一些非常糟糕的事情。 当我开始在Android Studio中的新项目,并尝试运行默认的android测试它给了我已知的错误:

错误:Gradle:java.util.concurrent.ExecutionException:java.util.concurrent.ExecutionException:com.android.tools.aapt2.Aapt2Exception:AAPT2错误:检查日志以获取详细信息

这个workround是把这一行添加到gradle.properties:

android.enableAapt2 = FALSE

这是我以前在原始项目中完成的步骤(我也遇到过这个错误)。 不幸的是,在它之后它给了我从我的问题的错误。 所以真正的问题是如何用aapt2来解决这个问题。 在这里也看到: AAPT2错误:检查日志的细节,在workround后workround不工作

任何想法?

我也有同样的问题。 每当我试图运行单独的测试或测试课程,我一直得到“空测试套件”的错误。 看来这是Android Studio中的一个错误。

相反,右键单击androidTest包,然后单击“运行测试…”。 这是我能得到它的唯一方法。

礼貌: codelab的家伙