安卓工作室 -> 测试通过:0 通过



我请求一点帮助来解决这个问题。我正在做这个教程来刷新记忆和更新我的知识与最新的艺术状态"开发Android应用程序与kotlin"。

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仪器测试旁边的框(转到File>>Settings>> testing),结果相同。

我下载了源代码,发现**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"
}

和room操作需要在协程范围内,否则编译器会给出错误

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

相关内容

  • 没有找到相关文章

最新更新