maven - 当单元测试花费太长时间时,构建失败
2022-09-03 01:03:37
在我的项目中,我有很多用JUnit和TestNG编写的单元测试。构建过程基于带有surefire插件的maven。
当至少一个单元测试花费太多秒时,maven有没有办法/插件使构建失败?我知道在 TeamCity, Jenkins 中有一些插件无法构建,但这“太远了”。
在我的项目中,我只想进行快速测试,以使单元测试过程有效。我可以改进我的旧测试,但我需要为未来的承诺提供保护
在我的项目中,我有很多用JUnit和TestNG编写的单元测试。构建过程基于带有surefire插件的maven。
当至少一个单元测试花费太多秒时,maven有没有办法/插件使构建失败?我知道在 TeamCity, Jenkins 中有一些插件无法构建,但这“太远了”。
在我的项目中,我只想进行快速测试,以使单元测试过程有效。我可以改进我的旧测试,但我需要为未来的承诺提供保护
如果你所有的测试都扩展了一些基类,我认为你可以坚持下去,这将适用于所有子类。@Rule
@Test
例如:
import org.junit.rules.Timeout;
public abstract class BaseTestConfiguration {
@Rule public Timeout testTimeout = new Timeout(60000); // 60k ms = 1 minute
}
public class ThingTests extends BaseTestConfiguration {
@Test
public void testThis() {
/*will fail if not done in 1 minute*/
}
@Test
public void testThat() {
/*will fail if not done in 1 minute*/
}
}
我们发现这是最简单的,而不是弄乱AspectJ或秘密配置指令。开发人员更有可能弄清楚Java部分,而不是所有秘密的XML。您也可以将和任意数量的其他 junit 指令放在基类中。@Before
@After
在 maven surefire 中,您可以使用 forkedProcessTimeoutInSeconds 以及 .forkMode=once
如果花费的时间太长,这将杀死分叉的jvm。如果你想对每个测试都这样做,你可以forkMode=pertest或forkMode=always(这对每个类都这样做)。