问题

我有一个通过所有测试的构建服务器,但是在某些计算机上,由于内存限制,测试失败。

建议的解决方案

我想为我的Ant构建脚本添加精确的内存限制-是否有一种简单的方法来执行此操作,以便所有用于编译,构建和测试我的程序的JVM具有完全相同的内存规范?另外,请注意:我不想通过在shell脚本中添加某些“ -Xmx”标志来“发现”修复程序-而是,我希望内存限制是ANT构建的自然和固有的方面。

最重要的是:如您所料,这里的优先事项是我不希望由于未知的,特定于机器的JVM参数而导致测试失败。相反,如果JVM低于内存需求,我希望在编译/测试/等之前完全停止构建。

理据

当特定的单元测试由于内存而失败时,这是非常令人不安的,因为您不知道失败是由于错误的代码(即内存泄漏)还是由于不良的硬件/ JVM设置而导致的。因此,希望在构建引擎中使“存储器”成为“固定的”部分。

最佳答案

取决于您如何运行测试,没有提到。

例如,junit task具有maxmemory属性。

如果您不进行分叉,则可能还会遇到内存问题。

更多细节可以使人们更好地定位答案。

编辑后

您可以指定JVM参数,即使在计算机上定义了系统属性,也可以由用户,CI系统等覆盖它们。

此外,测试实际上占用了任意数量的内存-除非您知道测试将占用的最大内存,否则在现实生活中,我看不到如何消除耗尽内存的可能性。

您的Ant构建,脚本和任务参数是定义一致的内存参数并确保执行JVM启动时处于一致状态的方式。

07-24 09:49
查看更多