无限循环集成测试
Integration test with infinite loop
我需要 运行 一个集成测试但是有一些问题,我知道人们首先要说的是我在其他答案中读到的是将无限循环中的内容提取到一个方法中,然后对其进行测试,但这并不是那么简单,因为我们要事先从工厂创建一些在 运行 循环中使用的东西,我想通过集成测试来测试应用程序的整个流程。
while (true) {
retrieveMessage();
}
我想收到我发送的一条消息,然后退出(仅从集成测试中退出,而不是从 运行ning 部署的应用程序中退出)。
我想过做类似的事情
if ("test".equals(getSpringActiveProfile()) {
break;
}
但这是一种不好的做法,它会专门为测试写入我的代码库吗?
任何想法或想法表示赞赏。
谢谢
一般来说,一个程序应该有一个 "natural" 的退出方式,无限循环本身就是一种代码味道......我会寻找这样的方法:
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
}
这可以由您的测试控制,并且在生产代码中,它可以用于在某些终止事件到达时终止应用程序以清理所有内容...
我需要 运行 一个集成测试但是有一些问题,我知道人们首先要说的是我在其他答案中读到的是将无限循环中的内容提取到一个方法中,然后对其进行测试,但这并不是那么简单,因为我们要事先从工厂创建一些在 运行 循环中使用的东西,我想通过集成测试来测试应用程序的整个流程。
while (true) {
retrieveMessage();
}
我想收到我发送的一条消息,然后退出(仅从集成测试中退出,而不是从 运行ning 部署的应用程序中退出)。
我想过做类似的事情
if ("test".equals(getSpringActiveProfile()) {
break;
}
但这是一种不好的做法,它会专门为测试写入我的代码库吗?
任何想法或想法表示赞赏。
谢谢
一般来说,一个程序应该有一个 "natural" 的退出方式,无限循环本身就是一种代码味道......我会寻找这样的方法:
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
}
这可以由您的测试控制,并且在生产代码中,它可以用于在某些终止事件到达时终止应用程序以清理所有内容...