Spring Framework - 单元测试设计

egg*_*y84 5 spring garbage-collection maven-2 unit-testing transactional

我正在编写尝试并开始讨论Spring Unit测试,特别是Transactional单元测试.

我们目前在各种类中注释了大约441个测试,如下所示:

@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration
@ContextConfiguration(locations={"/context/ServiceTest-context.xml"}, inheritLocations=false)
public class ServiceTests extends AbstractTransactionalJUnit4SpringContextTests {

    @Test
    public void testSomething() {}

    @Test
    public void testSomethingElse() {}
}
Run Code Online (Sandbox Code Playgroud)

我们的每个测试类都有自己的测试上下文.

我们面临的问题是,当我们运行单个测试类或单个包时,测试运行正常.

但是,当我们想通过使用maven或类似Hudson集成之类的东西来扩展它以运行所有我们的测试(当前> 400).

mvn test
Run Code Online (Sandbox Code Playgroud)

我们达到了一个点,然后开始体验Java GC Limit超出错误.

现在我觉得这取决于我们的测试计划设计,而不是我们需要提高内存限制或关闭警告.

任何人都可以分享他们的经验以及他们解决类似问题的方式吗?

Eggsy

non*_*ont 1

我非常确定容器将在其生命周期期间保留所有上下文,除非您显式调用 appCtx.close()

每个测试都有其自己的上下文,是否有某些特殊原因?因为除非你有特殊原因这样做……我想说,不要这样做。只要您有适当的设置和拆卸方法,您应该能够共享。即使您将类似的测试分组在一起并且只有那些共享上下文。请提供更多信息!