gpt4 book ai didi

hibernate - 一起运行时 Maven Spring 测试失败,但单独成功(ehcache 关闭,IllegalTransactionStateException)

转载 作者:行者123 更新时间:2023-12-04 15:37:45 25 4
gpt4 key购买 nike

我们正在对一个相当大的 web 应用程序使用 Maven/Surefire 和 Spring/Hibernate 事务测试。有 138 个 Test* 类,总共运行 1178 个测试。

一个简单的mvn test将产生 82 个错误,其性质往往暗示应用程序上下文已损坏:

其中许多:

IllegalTransactionStateException: Pre-bound JDBC Connection found!

其中一些:
NoSuchMethodError: org.hibernate.cache.CacheException.<init>(Ljava/lang/Exception;)V

对于每个失败的测试,单独运行测试类 mvn test -Dtest=TestFailingClass成功。确实,使用 - Dtest=TestClass1,TestClass2,Etc我所有测试类的各种子集以不同的方式成功或失败。例如,仅运行失败的测试类会成功,但错误为 0。

由于没有明显的方法来控制 Surefire 测试的类的顺序,我很难确定哪些测试类似乎使上下文处于不良状态。

我正在寻找的是一种有助于以某种确定性方式确定正在发生的事情的策略。我当然可以从日志中看到测试的顺序,但我无法可控地重现该顺序。

当然,关于如何处理它的建议......

最佳答案

实际上,问题来自损坏的 Spring 应用程序上下文。早期测试之一是弄脏上下文并导致以下测试出错。

一个困难是在发现导致问题的测试的同时试图控制测试的顺序。

我能够通过使用 Maven 的日志来查找测试类运行的顺序,然后从顶部一次排除一个测试来实现这一点。三十四次测试,我找到了罪魁祸首。

这是一个名为 TestSpringContexts 的测试。在这些测试中添加 @DirtiesContext 解决了这个问题,但也通过从测试中删除对 context.close() 的调用来解决。

我在这里写了一篇关于这个过程的博客文章,但这就是问题的要点:http://mojo.whiteoaks.com/2010/04/27/finding-the-test-that-corrupts-the-suite/

魔力

关于hibernate - 一起运行时 Maven Spring 测试失败,但单独成功(ehcache 关闭,IllegalTransactionStateException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2686052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com