【发布时间】:2010-10-08 21:11:11
【问题描述】:
我有一个方法尝试调用内存中的图像转换器,如果失败,则尝试在磁盘上进行图像转换。 (内存中的图像转换器会尝试分配图像的第二个副本,因此如果原始图像非常大,我们可能没有足够的内存。)
public BufferedImage convert(BufferedImage img, int type) {
try {
return memory_converter.convert(type);
}
catch (OutOfMemoryError e) {
// This is ok, we just don't have enough free heap for the conversion.
}
// Try converting on disk instead.
return file_converter.convert(img, type);
}
我想为 JUnit 编写单元测试来执行每个代码路径,但是在运行 JUnit 时使用足够少的堆来强制 OutOfMemoryError 很不方便。有什么方法可以在 JUnit 中模拟 OutOfMemoryError 吗?
我突然想到,我可以创建一个 BufferedImage 的假子类,它在第一次调用内存转换器调用的方法时抛出 OutOfMemoryError,但随后在后续调用中表现正常。不过,这似乎是一种 hack。
【问题讨论】:
标签: java unit-testing testing junit out-of-memory