object MyObject {
private var initialized = false
private lateinit var data: String
fun initialize(data: String) {
this.data = data
initialized = true
}
fun plus(str: String) = initialized {
"$data $str"
}
private fun <T> initialized(block: () -> T): T {
if (!initialized) {
throw RuntimeException("uninitalized")
}
return block()
}
}
现在你可以测试它了
class Test {
@Test(expected = RuntimeException::class)
fun `Have to throw RuntimeException if not initialized`() {
// Set
// Do
MyObject.plus("aaa")
// Check
}
@Test(expected = RuntimeException::class)
fun `Plus have to return correct value`() {
// Set
MyObject.initialize("bbb")
// Do
val result = MyObject.plus("aaa")
// Check
assert(result == "bbb aaa")
}
}
4条答案
按热度按时间yr9zkbsy1#
可以使用可空类型和空检查来确定对象是否已初始化。大概是这样的:
vlurs2pr2#
不完全清楚你在“对象”和“初始化”下的确切含义,但我会尝试想象。
所以你有一个对象
现在你可以测试它了
insrf1ej3#
如果你说的对象和初始化是指一个后期初始化属性,那么你需要访问你的属性的
KProperty
引用。gmxoilav4#
除了前面的答案之外,如果对象是lateinit变量,则可以使用isInitialized属性来检查它是否已初始化。大概是这样的: