首页 > 解决方案 > 无限循环的集成测试

问题描述

我需要运行一个集成测试但是有一些问题,我知道人们会说我在其他答案中读到的第一件事是将无限循环中的内容提取到一个方法并对其进行测试,但这并不是那么简单我们事先从工厂创建了一些在运行时循环中使用的东西,我想通过集成测试来测试应用程序的整个流程。

while (true) {
    retrieveMessage();
}

我想接收我发送的一条消息,然后退出(仅从集成测试,而不是部署时正在运行的应用程序)。

我想过做类似的事情

if ("test".equals(getSpringActiveProfile()) {
   break;
}

但这将是一种不好的做法,它会专门为测试而写入我的代码库吗?

任何想法或想法表示赞赏。

谢谢

标签: javaspringunit-testingjunitintegration-testing

解决方案


一般来说,程序应该有一种“自然”的退出方式,无限循环本身就是一种代码味道......我会寻找这样的方法:

boolean keepRunning = true; //even better as private field, then your class can get a "public void stop() { keepRunning = false; } method or something similar...
while(keepRunning) {
    //do whatever you need
}

这可以通过您的测试来控制,并且在生产代码中,它可以用于在某些终止事件到达时终止应用程序以清理所有内容......


推荐阅读