JUnit @Test
具有指定timeout
参数的有用功能,这样如果编写得不好的程序花费的时间超过timeout
秒,就会自动终止。问题是这使用 clock 时间而不是 CPU 时间 - 因此测试实际上会在运行之间运行不同的时间。例如,测试可能会在1.901或1.894秒内运行2秒超时,具体取决于CPU同时运行的其他作业。
我可以指定在运行期间保持一致的超时或类似值吗? (此问题的扩展包括:跨机器一致等)
答案 0 :(得分:2)
我认为您最好的方法是将JUnit超时设置为所需超时的2-3倍,并使用ThreadMXBean
进行自己的基准测试以测量CPU时间(如果可用)。如果您超时,则可以fail
。