如何在 Spring 集成测试中启动应用程序?

我需要为我的应用程序创建一个集成测试。我使用@SpringBootTest(classes = {Application.class})注释来启动它,但它的启动需要时间。那么当我的应用程序准备好时,我如何运行测试?


问题出在 kafka 侦听器中:


@SpringBootApplication

public class Application {


   @Autowired

   private KafkaConsumeHandler kafkaConsumeHandler;


   public static void main(String[] args) {

       SpringApplication.run(Application.class, args);

   }


   @KafkaListener(topics =  "${kafka.topics.test}",  containerFactory = "kafkaListenerContainerFactory")

public void listenRegistred(KafkaMessage consumeKafka) {

        kafkaConsumeHandler.handleStartProcess(consumeKafka);

}

如果我尝试在测试中立即发送消息,则侦听器将无法捕捉到它们。所以我在发送之前使用了一点暂停。


@RunWith(SpringRunner.class)

@SpringBootTest(classes = {Application.class})

@DirtiesContext

public class ProcessTest {   


@ClassRule

public static KafkaEmbedded embeddedKafka = new KafkaEmbedded(1, true, "testTopic");


@Test

public void sendTestRegistred() throws Exception {

    Thread.sleep(5000); // Need a delay to boot an application

    ...

}


富国沪深
浏览 154回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java