如何修复“ kotlin.UninitializedPropertyAccessException:lateinit属性嘲笑网络尚未初始化”?

时间:2019-05-20 13:18:31

标签: kotlin corda

我正在尝试通过IOUFlowIssueTest,但给我的错误是MockNetwork尚未初始化,而已初始化。

这是在Corda 4.0上。

class IOUIssueFlowTests {
    lateinit var mockNetwork: MockNetwork
    lateinit var a: StartedMockNode
    lateinit var b: StartedMockNode

    @Before
    fun setup() {
        mockNetwork = MockNetwork(listOf("net.corda.training"),
                notarySpecs = listOf(MockNetworkNotarySpec(CordaX500Name("Notary","London","GB"))))
        a = mockNetwork.createNode(MockNodeParameters())
        b = mockNetwork.createNode(MockNodeParameters())
        val startedNodes = arrayListOf(a, b)
        startedNodes.forEach { it.registerInitiatedFlow(IOUIssueFlowResponder::class.java) }
        mockNetwork.runNetwork()
    }
    @After
    fun tearDown() {
        mockNetwork.stopNodes()
    }

这是错误-

kotlin.UninitializedPropertyAccessException:lateinit属性嘲笑网络尚未初始化

1 个答案:

答案 0 :(得分:0)

我不得不猜测一下:万一UninitializedPropertyAccessException构造函数抛出异常,我看到的唯一会导致MockNetwork的地方就是您的拆解方法。

从Kotlin 1.2开始,您可以检查lateinit变量的初始化状态。因此,您可以执行以下操作:

@After
fun tearDown() {
    if(::mockNetwork.isInitialized) {
        mockNetwork.stopNodes()
    }
}