我试图断言我收到了来自pubnub的10条消息。我确实将它们接收到控制台。然而,断言我的正确方法是什么。我不完全确定我应该使用什么语法。
@Test
public void testPublisher() throws PubnubException {
// Send 10 messages
for(int i = 0; i <= 10; i++){
service.publish("my_channel", "Message: " + i);
}
// Wait until we have recieved the 10 messages
do{}while(service.count() <= 10);
// For each message print out the details
service.getMessages().forEach(System.out::println);
assertArrayEquals(service.count());
}
答案 0 :(得分:0)
你应该可以使用
assertTrue(service.count() == 10);
答案 1 :(得分:0)
您的do...while
循环被称为“忙碌旋转”,在大多数情况下被视为反模式,应该避免。繁忙的旋转会在CPU等待时使CPU崩溃,如果出现问题并且没有收到10条消息,您的实施也可以永久运行。
https://en.wikipedia.org/wiki/Busy_waiting
您应该考虑一种阻止机制......可能会出现超时等问题 BlockingQueue.take()或BlockingQueue.poll()或CountdownLatch.await()