【问题标题】:Android Studio -> Test Passed: 0 passedAndroid Studio -> 测试通过:0 通过
【发布时间】:2022-08-06 07:42:30
【问题描述】:

我请求一些帮助来解决这个问题。我正在做这个教程来刷新记忆和更新我的知识与最先进的“使用 Kotlin 开发 Android 应用程序”。

https://classroom.udacity.com/courses/ud9012

在第 6 课第 10 课中,有这个源代码:https://github.com/udacity/andfun-kotlin-sleep-tracker/tree/Step.03-Solution-Create-RoomDatabase

@Test
@Throws(Exception::class)
fun insertAndGetNight() {
    val night = SleepNight()
    sleepDao.insert(night)
    val tonight = sleepDao.getTonight()
    assertEquals(tonight?.sleepQuality, -1)
}

假设它应该通过测试,但在执行之后,它会返回:

Test Passed: 0 passed.

在右边的终端我可以读到:

运行测试

$ adb shell am instrument -w -m    -e debug false -e class \'com.example.android.trackmysleepquality.SleepDatabaseTest#insertAndGetNight\' com.example.android.trackmysleepquality.test/android.test.InstrumentationTestRunner
\"Run Android instrumented tests using Gradle\" option was ignored because this module type is not supported yet.

项目有什么问题,为什么没有通过测试?

我添加了一个文本手动写它,结果是一样的,0测试通过。这是我添加的测试:

@Test
fun addition_isCorrect() {
    assertEquals(4, 2 + 2)
}

此外,我尝试在测试设置(转到文件>>设置>>测试)中取消选中使用 Gradle 运行 Android 检测测试旁边的框,结果相同。

    标签: android android-studio testing android-testing


    【解决方案1】:

    我下载了源代码,发现 **testInstrumentationRunner ** 不见了,所以你需要在 gradle.build 中添加它

        defaultConfig {
            applicationId "com.example.android.trackmysleepquality"
            minSdkVersion 19
            targetSdkVersion 30
            versionCode 1
            versionName "1.0"
            multiDexEnabled true
            vectorDrawables.useSupportLibrary = true
    
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
    

    并且房间操作需要在协程范围内,所以没有它编译器会出错

        @Test
        @Throws(Exception::class)
        fun insertAndGetNight() {
            runBlocking {
                val night = SleepNight()
                sleepDao.insert(night)
                val tonight = sleepDao.getTonight()
                assertEquals(tonight?.sleepQuality, -1)
            }
        }
    

    【讨论】:

    • 非常感谢,它奏效了。他们怎么可能在课上忘记了这一点?也许最近发生了变化?还有一个问题。在测试文档中,developer.android.com/studio/test/test-in-android-studiogoogle 说,如果您在函数中按“Control+Shift+T”,则必须出现一个弹出窗口来生成测试。不管用。相反,它会显示以下消息:“未找到测试对象”。关于如何从函数生成测试的任何想法?
    • 不,我之前没试过
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多