java - 无限循环的集成测试
问题描述
我需要运行一个集成测试但是有一些问题,我知道人们会说我在其他答案中读到的第一件事是将无限循环中的内容提取到一个方法并对其进行测试,但这并不是那么简单我们事先从工厂创建了一些在运行时循环中使用的东西,我想通过集成测试来测试应用程序的整个流程。
while (true) {
retrieveMessage();
}
我想接收我发送的一条消息,然后退出(仅从集成测试,而不是部署时正在运行的应用程序)。
我想过做类似的事情
if ("test".equals(getSpringActiveProfile()) {
break;
}
但这将是一种不好的做法,它会专门为测试而写入我的代码库吗?
任何想法或想法表示赞赏。
谢谢
解决方案
一般来说,程序应该有一种“自然”的退出方式,无限循环本身就是一种代码味道......我会寻找这样的方法:
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
}
这可以通过您的测试来控制,并且在生产代码中,它可以用于在某些终止事件到达时终止应用程序以清理所有内容......
推荐阅读
- javascript - Vuex 问题。this.$store.dispatch(...) 工作,虽然 ...mapAction 没有
- ansible - vars 文件夹中 main.yml 文件在 ansible 角色中的用途是什么?
- c# - 如果您先滚动鼠标滚轮,则不会发生滚轮按钮的中键 MouseDown 事件
- android - 如何在通过广播接收器将 JobIntentService 之间的数据传递给活动时防止 TransactionTooLarge 异常
- reactjs - Chrome 不会加载 Create-React-App 但 Firefox 会?
- regex - 从 Dart 中的数字中修剪前导零
- pytorch - PyTorch 的 nn.DataParallel 是否在每个 GPU 中加载相同的模型?
- angular - 在不使用提交按钮的情况下上传多个带有预览的图像
- javascript - 反应原生 - '未定义不是对象'?
- python - Python:帮助修复我秒表上的重置功能