我有超过5000个Spring单元测试,我知道每个测试都适用于Oracle DB,并进行回滚,因为我已经单独测试了每一个。当我运行maven测试套件时,我最终出现内存不足错误,发现一些测试没有回滚。我通过在我的pom.xml中添加argLine参数修复了内存不足错误,并且它不再发生了。但我仍在试图弄清楚内存不足导致回滚失败?或者它可能是别的吗?如果内存不足是罪魁祸首,那么在代码中处理/解决这个问题的最佳方法是什么?感谢。
答案 0 :(得分:0)
内存不足错误会导致回滚失败吗?或者它可能是别的什么?
jvm在遇到OutOfMemory错误后无法执行任何操作。自Spring开始数据库事务以来,它应该是需要调用transaction.rollback()
的人。由于您的maven测试套件遇到OutOfMemory错误,因此永远不会调用回滚,这应该是根本原因。
如果内存不足是罪魁祸首,那么解决这个问题的最佳方法是什么?
增加jvm堆大小可能有所帮助。
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
-Xss<size> set java thread stack size
E.g。
java -Xmx256m TestData.java
This可能是你在maven中的表现方式。