我可以让Surefire只进行一次昂贵的设置/拆解吗?

时间:2011-09-14 19:37:46

标签: unit-testing maven junit surefire

我有一系列单元测试,都需要与Apache Zookeeper服务器通信。显然,如果我有一个用于模拟服务器连接的库(或者一种简单的方法来自行推送),这将是最佳的,但据我所知,此时没有存在,并且在引擎盖下有足够的移动部件我犹豫不决亲自尝试。

因此,到目前为止,我们的解决方案是在本地站出一个虚拟服务器,执行测试,然后在最后将其拆除。这种作品,虽然据我所知,在整个测试过程中没有简单的方法告诉Surefire做一些事情 - 充其量,我有@BeforeClass@AfterClass装饰。

Zookeeper初始化过程正在将每个应该几毫秒的测试运行转换为每个类几秒钟,整个项目可以运行几分钟。如果我可以设置测试以便它站起来服务器,运行每个测试,然后撕下它,我想我会看到至少一个数量级的加速。

有简单的解决方法吗?我是以错误的方式来做这件事的吗?如果有一个现有的模拟动物园管理员库,或者一个简单的方法来推销我自己的库,那也是一个很好的解决方案。

3 个答案:

答案 0 :(得分:3)

听起来像集成测试。看看'failsafe'而不是surefire,并在额外的生命周期阶段做昂贵的事情来设置和拆卸集成测试。

答案 1 :(得分:1)

如果您选择使用TestNG,则可以使用@BeforeSuite。

答案 2 :(得分:0)

您可能想要查看Spring中的AbstractSingleSpringContextTests类。这个类为所有子类加载一个Spring上下文,只有在调用方法setDirty()时才重新加载它。

不完全是你想要的,但我确信你可以复制模式并使用它来启动模拟zookeeper服务器。