无限循环的单元测试用例
Unit test Cases for infinite loops
我有一段类似的代码用于读取 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();
}
Link:
在单元测试用例中,我将消息列表模拟为为测试创建的列表
@Mock
ReceiveMessageResult receiveMessageResult;
.
.
.
when(receiveMessageResult.getMessages()).thenReturn(messageList);
我在测试这个时遇到问题,因为由于变量消息的重新分配,测试用例中的硬编码列表的循环是无限的。
有没有办法只针对测试用例减少这个变量?
PS:找到与此主题类似的问题,但没有涵盖我的用例。
您可以像这样链接 thenReturn 调用:
when(receiveMessageResult.getMessages()).thenReturn(messageList).thenReturn(Collections.emptyList());
我有一段类似的代码用于读取 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();
}
Link:
在单元测试用例中,我将消息列表模拟为为测试创建的列表
@Mock
ReceiveMessageResult receiveMessageResult;
.
.
.
when(receiveMessageResult.getMessages()).thenReturn(messageList);
我在测试这个时遇到问题,因为由于变量消息的重新分配,测试用例中的硬编码列表的循环是无限的。
有没有办法只针对测试用例减少这个变量?
PS:找到与此主题类似的问题,但没有涵盖我的用例。
您可以像这样链接 thenReturn 调用:
when(receiveMessageResult.getMessages()).thenReturn(messageList).thenReturn(Collections.emptyList());