Kafka 单元测试等待失败

时间:2020-12-29 13:21:58

标签: unit-testing apache-kafka consumer

我写了一个测试,但在断言部分它通知为
Assert.assertTrue(latch.await(0, TimeUnit.SECONDS));

可能是假的,测试失败。

我该如何解决这个问题。或者有没有更好的方法来测试这个?

    package az.iba.ms.customer.kafka;
    
imports *
    
@RunWith(SpringRunner.class)
@SpringBootTest
@DirtiesContext
@EmbeddedKafka(topics = { "${kafka.topics.customer}" })
@TestPropertySource(properties = { "kafka.bootstrap-servers=${embedded.kafka.brokers}" })
public class ListenerTest {

    @Value("${kafka.topics.customer}")
    private String topic;

    @MockBean
    private EmbeddedKafkaBroker embeddedKafka;

    @Mock
    private CountDownLatch latch;

    @Mock
    private KafkaTemplate<Integer, String> producer;

    @Mock
    CustomerModifyResponseDTO customerModifyResponseDto;

    @Before
    public void setUp() {
        this.producer = buildKafkaTemplate();
        this.producer.setDefaultTopic(topic);

        customerModifyResponseDto = CustomerModifyResponseDTO.builder()
                .fcubsheader(null)
                .fcubsbody(null)
                .build();
    }

    private KafkaTemplate<Integer, String> buildKafkaTemplate() {
        Map<String, Object> senderProps = KafkaTestUtils.producerProps(embeddedKafka);
        ProducerFactory<Integer, String> pf = new DefaultKafkaProducerFactory<>(senderProps);
        return new KafkaTemplate<>(pf);
    }

    @Test
    public void listenerShouldConsumeMessages() throws InterruptedException {
        // Given
        producer.sendDefault(1, "Hello world");
        // Then
        Assert.assertTrue(latch.await(0, TimeUnit.SECONDS));

    }

}

0 个答案:

没有答案