1

我正在尝试将 EmbeddedKafka ( https://github.com/spring-projects/spring-kafka/blob/master/src/reference/asciidoc/testing.adoc ) 与我的单元测试集成。

不总是,但我经常在 EmbeddedKafka 启动期间遇到错误。

2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:java.io.tmpdir=C:\tmp\
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:java.compiler=<NA>
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:os.name=Windows 10
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:os.arch=amd64
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:os.version=10.0
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:user.name=user
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:user.home=C:\Users\user
2019-10-08T11:23:43.894Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Server environment:user.dir=C:\work\
2019-10-08T11:23:43.913Z INFO  [main] org.apache.zookeeper.server.ZooKeeperServer: Created server with tickTime 500 minSessionTimeout 1000 maxSessionTimeout 10000 datadir C:\tmp\kafka-2406612557331641452\version-2 snapdir C:\tmp\kafka-919479945966258903\version-2
2019-10-08T11:23:43.923Z INFO  [main] org.apache.zookeeper.server.NIOServerCnxnFactory: binding to port /127.0.0.1:0
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.146 sec <<< FAILURE! - in kafka.KafkaTopicUtilsTest
kafka.KafkaTopicUtilsTest  Time elapsed: 0.146 sec  <<< ERROR!
org.I0Itec.zkclient.exception.ZkInterruptedException: java.lang.InterruptedException
Caused by: java.lang.InterruptedException

pom.xml:

       <dependency>
            <groupId>org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>2.2.1</kafka>
       </dependency>
       <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.0.7.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.0.7.RELEASE</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka-test</artifactId>
            <version>2.2.9.RELEASE</version>
            <scope>test</scope>
        </dependency>

KafkaTopicUtilsTest.java 服务器初始化通过@Rule:

@RunWith(MockitoJUnitRunner.class)
public class KafkaTopicUtilsTest {
    static final String INITIAL_TOPIC = "initial_topic";

    @ClassRule
    public static EmbeddedKafkaRule embeddedKafka = new EmbeddedKafkaRule(1, true, 5, INITIAL_TOPIC);
   ...
}

如前所述,当我在 InteliJ 中运行测试时,它几乎总是运行良好。

从 INteliJ ( Run 'KafkaTopicUtilsTest' ) 执行工作正常。

通过 maven mvn clean install执行测试失败。

显式测试执行mvn -Dtest=KafkaTopicUtilsTest 测试工作正常。

有人遇到过这样的问题吗?任何线索可能是什么问题?

问题已解决

该问题与其他测试用例有关。另一个测试(不使用 EmbeddedKafka)是抛出 InterrupedException 并检查代码是否正确响应。通过调用Thread.currentThread().interrupt()来保持中断状态。看起来虚拟机保持中断状态,EmbeddedKafka 对其做出反应。

4

0 回答 0