因此,我有以下内容:一个spring Boot 应用程序,它通过侦听来自队列的消息并处理它们以及它的一些UT和IT来启动。现在,从一个集成测试类,我想验证如果我向输入队列发送大量消息,我的应用程序不会崩溃。
对于发布,从这个方法测试,我连接到队列并发布一些虚拟消息,然后我使用Mockito#spy
启动一个新线程。到目前为止,其他IT只存在一条消息。然后我使用ArgumentCaptor
来查看我发送到队列的消息是否被我的应用程序线程成功处理。
我不知道该怎么做的是等待数千个处理方法调用的执行,以确保应用程序不会崩溃。测试应该在所有消息从队列中读取后结束,没有异常抛出(我没有验证消息,因为现在不需要)。处理时间应该在1到2小时之间。
我读过关于CountDownLatch
的文章,但不知道如何等待线程执行,只要它需要处理我所有的消息,如果这确实是一个帮助使用。
有人能为我在这里尝试做的事情提出一个实现设计吗?或者有没有可能我尝试做的事情是不可能的?
提前感谢!
更新:我不能修改测试的应用程序方法或类,那么有没有一种方法可以检索对我的方法的调用次数?
1条答案
按热度按时间myzjeezk1#
尝试Awaitility。在这种特殊情况下,测试用例应该异步启动消息处理,然后使用Awaitility等待条件。
这一个将永远等待,直到条件满足。
字符串
或者,您可以指定最小和/或最大等待时间:
型
其中
conditionIsSatisfied
是可调用的,能够检查是否已经处理了预期数量的消息:型
更多示例请参见用法页面。