我们正在使用JUnit(和Maven)来测试将文档正确插入MarkLogic服务器。被摄取的文件非常大,并且在摄取时经历了复杂且耗时的过程,通常需要几十秒或几分钟才能完成。
是否有一种很好的清洁方式来定期轮询我们在系统中寻找的结果?如果我们可以每10秒轮询一次,以满足我们的需求。我见过人们说在Java中使用Thread.sleep()但这不是一个合适的解决方案。我在JUnit中有RTFM这个并没有找到解决方案。也许Maven可以参与解决方案?感谢。
答案 0 :(得分:0)
对于您的测试,您可以尝试Awaitility framework。
您可以设置超时,也可以设置检查长任务完成的回调(如果任务是异步的)。
答案 1 :(得分:0)
我使用循环和Thread.sleep来处理我需要执行此操作的罕见实例。 (它通常用于队列,所以我不会等待超过20秒。)每隔X秒尝试一次,然后在Y秒后放弃并失败。 Nico的awaitility解决方案听起来更好。
Maven无法解决这个问题。 Maven是一个构建服务。它可以帮助的唯一方法是使用“存根”库而不是真正的Web服务进行测试。但这不是你想要测试的。