Nul*_*ion 5 testing android android-testing android-studio
我请求对这个问题的一些帮助。我编写本教程是为了通过最新的“使用 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)
}
Run Code Online (Sandbox Code Playgroud)
据说,它应该通过测试,但执行后,它返回:
Test Passed: 0 passed.
Run Code Online (Sandbox Code Playgroud)
在右侧的终端中我可以读到:
运行测试
$ 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.
Run Code Online (Sandbox Code Playgroud)
项目出了什么问题,为什么测试没有通过?
我加了一段文字手动写,结果是一样的,0测试通过。这是我添加的测试:
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
Run Code Online (Sandbox Code Playgroud)
另外,我尝试在测试设置(转到文件>>设置>>测试)中取消选中“使用 Gradle 运行 Android 仪器测试”旁边的框,结果相同。
我下载了源代码,发现 **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"
}
Run Code Online (Sandbox Code Playgroud)
并且房间操作需要在协程范围内,因此如果没有它,编译器会给出错误
@Test
@Throws(Exception::class)
fun insertAndGetNight() {
runBlocking {
val night = SleepNight()
sleepDao.insert(night)
val tonight = sleepDao.getTonight()
assertEquals(tonight?.sleepQuality, -1)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4221 次 |
| 最近记录: |