我有这样的JUnit测试:
Test fun testCategoriesLoading() {
val subscriber = TestSubscriber<List<ACategory>>()
service.categories().subscribe(subscriber)
subscriber.awaitTerminalEvent()
subscriber.assertNoErrors()
}
Run Code Online (Sandbox Code Playgroud)
service是Retrofit,它使用GsonConverter反序列化json
data class ACategory(val id: String, val title: String, val parentId: String?, val hasChildren: Boolean)
Run Code Online (Sandbox Code Playgroud)
实例.
测试正在传递,即使ACategory填充了id = null,title = null等.
所以,据我所知,gson使用反射,kotlin懒惰地解决了第一次访问时的这种可空性限制.
有没有办法强迫这个决心?一些好看的解决方案没有手动直接访问字段?我真的不想手工编写每个断言.
您可以使用新的 Kotlin 反射。如果您有 的实例ACategory,请致电
ACategory::class.memberProperties
.filter { !it.returnType.isMarkedNullable }
.forEach {
assertNotNull(it.get(aCategory))
}
Run Code Online (Sandbox Code Playgroud)
访问所有标记为不可为空的属性并断言它们不为空。确保类路径上有反射库。
确保您使用的是 M14。
| 归档时间: |
|
| 查看次数: |
1041 次 |
| 最近记录: |