【发布时间】:2017-05-30 12:16:15
【问题描述】:
我要考B类:
class B : A {
override fun init() {
// do work here
}
}
class A {
protected fun init() { } // will be called by internal logic
}
在 Java 中调用:b.init() 在测试方法中没有问题(测试类与测试对象在同一个包中),但在 Kotlin 编译器中会报错:
无法访问“init”:它在“B”中受到保护
@Test
fun `checks init`() {
val b = B()
b.init()
// assert work done
}
为什么它不起作用?如何解决这个问题(我想避免公开方法)?
【问题讨论】:
-
@JBNizet 更改覆盖方法的可见性是不可能的
internal和public不是真的可以接受 - 特别是因为我可以在 Java 中做到这一点
标签: unit-testing kotlin