首页 > 解决方案 > Kotlin:在测试中访问私有变量

问题描述

我有一个包含以下属性的 Kotlin 类

private var items: List<Item> = listOf()

在我的测试中,我现在想检查列表中是否有项目。我尝试通过反射来做到这一点:

val field = sut::class.members.findLast { f -> f.name.equals("items") }

我现在得到一个 KCallable<*> 回来,但我不知道如何访问或至少计算我列表中的项目。

标签: reflectionkotlin

解决方案


你得到的KCallable其实是一个实例KProperty1,你可以调用它的get方法来获取实例:

 val items = (field as KProperty1<ClassUnderTest, List<Item>>).get(sut)

推荐阅读