我想停止并标记为失败太久,运行junit测试(在Maven 3 build中执行)。我知道的三种方法做的:标记为失败,运行时间过长JUnit测试
1)使用测试注释与超时参数:
@Test(timeout=100)
public void testWithTimeout() {
...
}
2)使用规则注释:
@Rule
public Timeout globalTimeout = new Timeout(100);
3)配置Maven的surefire-插件使用以下选项:
forkedProcessTimeoutInSeconds=1
reuseForks=false
线索是1)和2)需要更改每个测试(它当你有成千上万的人时会感到痛苦)。 3)解决方案是不可接受的,因为在许多模块中,第一次测试开始时测试使用的上下文 - 测试性能会急剧下降。
你有什么其他的想法如何实现?任何棘手的解决方案(不涉及修补JUnit :))?
我的第一个问题是,你的单元测试会导致如此之多的超时?这听起来像你可能实际上正在执行集成或验收测试。 – 2014-09-29 20:19:36
的确,你是对的。请注意,我没有提到我正在使用单元测试。 JUnit被用作集成和功能测试的基础框架。 – 2014-09-29 20:22:48
不,但Maven一般会推荐Failsafe进行集成/功能测试 - 您可能会在那里找到更好的选择。 – 2014-09-29 20:53:20