如何等待Scala Actor完成exit()? 我在单元测试中设置了两个Actor,并发送了一些消息以启动它们。 它们之间相互发送几条消息,最终都会调用exit()。 我如何使我的单元测试等待两个Actor完成后才通过?
如何等待Scala Actor完成exit()? 我在单元测试中设置了两个Actor,并发送了一些消息以启动它们。 它们之间相互发送几条消息,最终都会调用exit()。 我如何使我的单元测试等待两个Actor完成后才通过?
如果您事先知道参与方之间的消息交换次数,您可以使用 java.util.concurrent.CountDownLatch
来跟踪消息计数。在参与方中,在每处理一条消息后执行以下操作:
latch.countDown()
latch.await()
java.util.concurrent.locks.Condition
。在演员中,当满足您的条件时,请执行以下操作:if (conditionSatisfied)
condition.signal()
while (!conditionSatisfied)
condition.await()
使其等待直到条件得到满足。
具体详情请参阅CountDownLatch
和Condition
的javadoc。
使用Condition
的示例,请参阅此Gist。
<entity state> must eventually(10, 1.second)(be(<state>)) // there will be 10 retires every second, and if the state will be different, exception is thrown
await()
调用所做的事情。 - Abhinav Sarkar