【发布时间】:2010-11-02 09:39:09
【问题描述】:
JUnit @Tests 具有指定 timeout 参数的有用功能,这样如果编写的程序花费的时间超过 timeout 秒,就会自动终止。问题是这使用 clock 时间而不是 CPU 时间 - 因此测试实际上会在两次运行之间运行不同的时间。例如,测试可能会运行 1.901 秒或 1.894 秒,超时 2 秒,具体取决于 CPU 上同时运行的其他作业。
我可以指定一个超时时间或类似的时间来在运行中保持一致吗? (这个问题的扩展包括:跨机器一致等)
【问题讨论】:
-
在不同的机器上我认为不是。根据 cpu+ram 等,您的代码肯定需要不同的时间。
-
这或多或少是我的想法。但是,在同一台机器上运行时保持一致呢?
-
您到底想测试什么?执行这段代码应该正好需要 1.8942451 秒,会不会,嗯,没用?
-
@Ishtar 我不知道你刚才说了什么。
-
这里真正的问题是什么?为什么你关心 0.007 秒?上面指定的两个值都在2s超时,如果2s不够,再给测试多一秒或者重写。
标签: java multithreading unit-testing concurrency junit