junit5一起使用

iq0todco  于 2021-06-07  发布在  Kafka
关注(0)|答案(1)|浏览(431)

我需要一个嵌入式Kafka单元测试(ut)的目的。
我正在尝试让github.com/salesforce/kafka-junit/tree/master/kafka-junit5与kotlin一起工作。

companion object {
    /**
     * gleefully stolen from: https://github.com/salesforce/kafka-junit/tree/master/kafka-junit5
     *
     * We have a single embedded Kafka server that gets started when this test class is initialized.
     *
     * It's automatically started before any methods are run via the @RegisterExtension annotation.
     * It's automatically stopped after all of the tests are completed via the @RegisterExtension annotation.
     */
        @JvmField
        @RegisterExtension
        var sharedKafkaTestResource: SharedKafkaTestResource = SharedKafkaTestResource().withBrokers(2)

}

但是 BeforeAllCallback#beforeAll , AfterAllCallback#afterAll 方法永远不会被调用。
我怎样才能让Kafkajunit5工作,或者
有没有另一个嵌入式Kafka解决方案,已经与Kotlin?
这是我的pom:

<properties>
... snip ...
    <salesforce-kafka-junit.version>3.1.0</salesforce-kafka-junit.version>
    <salesforce-kafka.version>1.1.1</salesforce-kafka.version>
    <junit-jupiter.version>5.3.2</junit-jupiter.version>
    <kotlin.version>1.2.71</kotlin.version>
</properties>

<dependencies>
    <dependency>
        <groupId>com.salesforce.kafka.test</groupId>
        <artifactId>kafka-junit5</artifactId>
        <version>${salesforce-kafka-junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>com.salesforce.kafka.test</groupId>
        <artifactId>kafka-junit-core</artifactId>
        <version>${salesforce-kafka-junit.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.11</artifactId>
        <version>${salesforce-kafka.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka-clients</artifactId>
        <version>${salesforce-kafka.version}</version>
    </dependency>
... snip ...
</dependencies>
iibxawm4

iibxawm41#

我终于明白了。这是一个依赖问题。下面的作品,现在Kafka-junit5上面的作品也是:

import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.AfterAllCallback
import org.junit.jupiter.api.extension.BeforeAllCallback
import org.junit.jupiter.api.extension.ExtensionContext
import org.junit.jupiter.api.extension.RegisterExtension

// @formatter:off
/**
 * to validate that certain junit5 features work with kotlin
 *
 * pom.xml:

<properties>
    <junit-jupiter.version>5.3.2</junit-jupiter.version>
    <junit-platform.version>1.3.2</junit-platform.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

 *
 */
// @formatter:on

open class TestRegisterExtension {

    companion object {

        @JvmField
        @RegisterExtension
        val extension = BeforeAllAfterAllCallBackExtension()
    }

    @Test
    fun beforeAllCallbackTest() {
        println("beforeAllCallbackTest() called")
        Runtime.getRuntime().addShutdownHook( Thread() { afterAllCallbackTest() })
        assertThat(extension.beforeAllCalled).isEqualTo(true)
    }

    fun afterAllCallbackTest() {
        println("\nafterAllCallbackTest() called")
        assertThat(extension.afterAllCalled).isEqualTo(true)
    }

    open class BeforeAllAfterAllCallBackExtension
        : BeforeAllCallback, AfterAllCallback {

        var beforeAllCalled = false
        var afterAllCalled = false

        override fun beforeAll(context: ExtensionContext?) {
            println("beforeAll() called")
            beforeAllCalled = true
        }

        override fun afterAll(context: ExtensionContext?) {
            println("afterAll() called")
            afterAllCalled = true
        }
    }

}

相关问题