Ошибка тестов Trader-Demo Flow: KotlinNullPointerException

Мой вопрос в том, как я могу загрузить вложение в потоковом тесте, чтобы этот тест прошел успешно.

Это тест, который я выполняю в трейдер-демо-тестировании.

private fun issue_commercial_paper( amount: Amount<Currency>,
                            issueRef: OpaqueBytes,
                            recipient: Party,
                            notary: Party,
                            progressTracker: ProgressTracker): SignedTransaction {
    val p = CommercialPaperIssueFlow(amount,issueRef,recipient,notary,progressTracker)
    val future = BankCorpNode.services.startFlow(p)
    mockNet.runNetwork()
    return future.resultFuture.getOrThrow()
}

     @Test
    fun `trade issuance`(){
        issue_commercial_paper(1000.DOLLARS,OpaqueBytes.of(42.toByte()),ACorp,notary,CommercialPaperIssueFlow.tracker())
        val pass = SellerFlow(BCorp ,500.DOLLARS, SellerFlow.tracker() )
        val future = ACorpNode.services.startFlow(pass)
        mockNet.runNetwork()
        val results = future.resultFuture.getOrThrow()
        assertNotNull(results)
    }

Это ошибка

kotlin.KotlinNullPointerException
    at net.corda.traderdemo.flow.CommercialPaperIssueFlow.call(CommercialPaperIssueFlow.kt:54)
    at net.corda.traderdemo.flow.CommercialPaperIssueFlow.call(CommercialPaperIssueFlow.kt:25)
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:96)
    at net.corda.node.services.statemachine.FlowStateMachineImpl.run(FlowStateMachineImpl.kt:44)
    at co.paralleluniverse.fibers.Fiber.run1(Fiber.java:1092)
    at co.paralleluniverse.fibers.Fiber.exec(Fiber.java:788)
    at co.paralleluniverse.fibers.RunnableFiberTask.doExec(RunnableFiberTask.java:100)
    at co.paralleluniverse.fibers.RunnableFiberTask.run(RunnableFiberTask.java:91)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at net.corda.node.utilities.AffinityExecutor$ServiceAffinityExecutor$1$thread$1.run(AffinityExecutor.kt:63)

вы можете обратиться к этому образцу, чтобы узнать, можете ли вы мне помочь, ребята, заранее спасибо https://github.com/corda/corda/tree/c4ceca378762fe1959f075a1c8b1c301e411b6b8/samples/trader-demo

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
149
1

Ответы 1

Предположим, ваше приложение находится под main/resources/my-attachment.jar. В рамках потокового теста Java вы загружаете это вложение на узел следующим образом:

nodeA.transaction(() -> {
    InputStream attachmentStream = getClass().getClassLoader().getResourceAsStream("my-attachment.jar");
    try {
        nodeA.getServices().getAttachments().importAttachment(attachmentStream, "joel", "myAttachment");
    } catch (IOException e) {
        e.printStackTrace();
    }

    // The attachment is now uploaded to the node.
    // TODO: Remainder of the test.

    return null;
});

Или в Котлине:

nodeA.transaction {
    val attachmentStream = javaClass.classLoader.getResourceAsStream("my-attachment.jar")
    nodeA.services.attachments.importAttachment(attachmentStream, "joel", "myAttachment")

    // The attachment is now uploaded to the node.
    // TODO: Remainder of the test.
}

Добавлен пример Котлина.

Joel 24.04.2018 17:33

Другие вопросы по теме