luk*_*ymo 16 java testing junit build-process maven
我在我的项目中有很多单元测试,用JUnit和TestNG编写.构建过程基于带有surefire插件的maven.
当至少一个单元测试花费太多秒时,maven是否有任何方法/插件可以使构建失败?我知道有一些插件可以在TeamCity,Jenkins中构建失败,但这"太过分了".
在我的项目中,我希望只有快速测试才能使单元测试过程有效.我可以改进旧的测试,但我需要保护未来的承诺
Jas*_*ger 12
如果你的所有测试扩展了一些基类,我认为你可以坚持@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*/
}
}
Run Code Online (Sandbox Code Playgroud)
我们发现这是最简单的,而不是搞乱AspectJ或秘密配置指令.开发人员更有可能找出Java部分,而不是所有秘密的XML.您也可以@Before
@After
在基类中放入任意数量的其他junit指令.
在maven surefire中,您可以使用forkedProcessTimeoutInSecondsforkMode=once
.
如果花费太长时间,这会杀死分叉的jvm.如果你想每次测试都这样做,你可以forkMode = pertest或forkMode = always(这对每个类都有).
归档时间: |
|
查看次数: |
5436 次 |
最近记录: |