我正在测试一个私有方法,它将以下参数作为输入:
- 待测试类**
delete(
someId1: String,
aList: List<CustomObject>,
someId2: String,
someId3: String,
someId4: String
) : Long? {
}
- 测试类**
x一个一个一个一个x一个一个二个x
我最终得到下面的错误:java.lang.NoSuchMethodException:
ClassToBeTested$Companion.delete(java.lang.String, java.util.Arrays$ArrayList, java.lang.String, java.lang.String, java.lang.String)
当我尝试将上面的方法声明更改为:
val method = ClassToBeTested.javaClass.getDeclaredMethod("delete", String::class.java,
List<CustomObject>::class.java, String::class.java, String::class.java, String::class.java)
我得到以下错误:Kotlin: Only classes are allowed on the left hand side of a class literal
我们是否可以测试接受自定义对象列表参数的私有函数?
2条答案
按热度按时间monwx1rj1#
不要使用反射,只需创建方法
internal
,然后直接从测试中调用它,甚至可以添加注解,如@VisibleForTesting
或@TestOnly
,这些注解可以在各种库中找到。goucqfw62#
您可以使用Kotlin的declaredMemberFunctions属性仅根据其名称来查找它: