在每个测试方法之后重置 EmbeddedKafka

Pra*_*dey 8 spring unit-testing apache-kafka spring-boot spring-kafka

我正在编写一个测试类,其中有多个需要 Kafka 的方法。每个代理都需要不同的代理属性,因此我希望每个代理都有一个单独的 EmbeddedKafka 实例。正在做

@EmbeddedKafka(
    partitions = 20,
    topics = {"topic"},
    controlledShutdown = false,
    brokerProperties = {
      "listeners=PLAINTEXT://localhost:9091",
      "port=9091",
      "auto.create.topics.enable=false",
      "delete.topic.enable=true"
    })
Run Code Online (Sandbox Code Playgroud)

对类中的每个方法使用代理属性。我不想要这个。克服这个问题的一种方法是将每个测试方法放在具有不同代理属性的单独类中。但我不想这样做,因为这会增加我需要的文件数量。

有办法解决这个问题吗?

Gar*_*ell 8

最好在每次测试中使用不同的主题。但是,您可以添加@DirtiesContext到每个测试方法或添加@DirtiesContext(classMode = ClassMode.AFTER_EACH_TEST_METHOD)到测试类。

  • 该解决方案大大减慢了测试速度。有没有不重新创建上下文的替代方案? (3认同)