在我当前的项目中,有一个类稍后将由许多其他人实现。此类为委托属性提供了一些生成器。
abstract class BaseClass {
protected val delegated1 get() = new Delegated1Impl()
protected val delegated2 get() = new Delegated2Impl()
...
}
这个基类可以这样使用:
class Example : BaseClass() {
var field1 by delegated1
var field2 by delegated2
}
现在我想测试这些委托生成器。其中一些包含我想测试的逻辑,但现在我只想知道每次调用它们时都会返回一个新实例。
现在我的问题是:如何测试这些生成器?
生成器在扩展类之外是不可见的,所以我不能简单地创建它的实例并调用这些方法。
@Test
fun `delegated1 should always return a new instance`() {
val target = object: BaseClass()
val first = target.delegated1 // This does not work since it is protected
val second = target.delegated1
assertTrue(first !== second)
}