5

我写信是为了尝试发起一些关于 Spring 单元测试,特别是事务单元测试的讨论。

我们目前在各种类中有大约 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() {}
}

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

我们面临一个问题,当我们运行单独的测试类或单独的包时,测试运行良好。

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

mvn test

我们到达一个点,然后开始遇到 Java GC Limit exceeded 错误。

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

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

艾格西

4

1 回答 1

1

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

每个测试都有自己的上下文有什么特别的原因吗?因为除非你有特殊的理由这样做......我会说,不要那样做。只要您有适当的设置和拆卸方法,您应该能够共享。即使您将类似的测试组合在一起并且仅让这些测试共享上下文。请提供更多信息!

于 2011-10-15T01:04:32.940 回答