Как исправить «kotlin.UninitializedPropertyAccessException: свойство lateinit mockNetwork не было инициализировано»? - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь передать 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 mockNetwork не было инициализировано

1 Ответ

0 голосов
/ 20 мая 2019

Я должен немного догадаться: единственное место, которое я вижу, которое может вызвать UninitializedPropertyAccessException, находится в вашем методе разбора на случай, если ваш MockNetwork конструктор выдает исключение.

Начиная с Kotlin 1.2, вы можете проверить состояние инициализации переменной lateinit. Таким образом, вы можете сделать следующее:

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