未找到类,使用Android Studio 3.0.1,Room,Kotlin在androidTest中清空测试套件

K.O*_*.Os 14 android gradle kotlin android-studio android-room

运行我的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'
}
Run Code Online (Sandbox Code Playgroud)

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

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


}
Run Code Online (Sandbox Code Playgroud)

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

进程已完成退出代码1未找到类:"com.blabla.shoppinglistapp.ShoppingListDaoTest"空测试套件.

而且它还没有开始

UPDATE

我注意到一些非常糟糕的事情.当我在Android Studio中启动新项目并尝试运行默认的androidTest时,它给出了我已知的错误:

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

这方面的工作是将此行添加到gradle.properties:

android.enableAapt2 = FALSE

这是我之前在原始项目中完成的步骤(我也遇到了这个错误).不幸的是,在它之后它给了我问题的错误.所以这真的是如何用aapt2来解决这个问题才能使这个工作.另请参见此处:AAPT2错误:检查日志以获取详细信息,在androidTest工作后无法正常工作

任何的想法?

Hen*_*nry 13

我也有同样的问题.每当我尝试运行单独的测试或测试类时,我都会收到"Empty Test Suite"错误.这似乎是Android Studio中的一个错误.

而是,右键单击该androidTest包,然后单击"运行'测试...".这是我能让它发挥作用的唯一方法.

礼貌:codelab人

更新:

这在Android Studio 3.1版本中已修复.即使这个gradlew connectedDebugAndroidTest 问题现在已经解决了.