无限循环的单元测试用例

猎鹰:

我有一段类似的代码可以读取SQS队列中的所有消息

ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
receiveMessageRequest.withMaxNumberOfMessages(10);
List<Message> messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
while (messages.size() > 0) {
    for (final Message message : messages) {
        System.out.println("Message");
        System.out.println("  MessageId:     " + message.getMessageId());
        System.out.println("  ReceiptHandle: " + message.getReceiptHandle());
        System.out.println("  MD5OfBody:     " + message.getMD5OfBody());
        System.out.println("  Body:          " + message.getBody());
        for (final Entry<String, String> entry : message.getAttributes().entrySet()) {
            System.out.println("Attribute");
            System.out.println("  Name:  " + entry.getKey());
            System.out.println("  Value: " + entry.getValue());
        }
    }

    receiveMessageRequest = new ReceiveMessageRequest(myQueueUrl);
    receiveMessageRequest.withMaxNumberOfMessages(10);
    messages = sqs.receiveMessage(receiveMessageRequest).getMessages();
}

链接:如何从SQS队列中获取所有消息,直到队列为空?

在单元测试用例中,我模拟了消息列表以创建为测试创建的列表

@Mock
ReceiveMessageResult receiveMessageResult;
.
.
.
when(receiveMessageResult.getMessages()).thenReturn(messageList);

我在测试中遇到问题,因为由于变量消息的重新分配,在测试案例中循环对于硬编码列表是无限的。

有没有办法仅针对测试用例来减小此变量?

PS:发现与此主题类似的问题,但它们没有涵盖我的用例。

Asky McAskface:

您可以链接thenReturn-calls,如下所示:

when(receiveMessageResult.getMessages()).thenReturn(messageList).thenReturn(Collections.emptyList());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章