我们已经编写了一个库,可以为各种文件格式生成缩略图。我喜欢对这个库进行单元测试。它生成JPEG文件。
我如何对图像转换进行单元测试?当JPG使用有损格式时,如何检查两个图像是否相似?
Microsoft TestTools有一个ImageCompare
课程,但我不确定它是否适合我的个人资料。有什么想法吗?
答案 0 :(得分:3)
首先,您的单元测试不会暴露实际的实现。你使用嘲笑。目标应该是验证调用方法并给出模拟实现返回预期结果。
人们经常将单元测试与集成测试混合在一起,并且总体上存在责任问题。你所描述的似乎是一个集成测试。
一种方法是创建一个ImageDifference函数来获得平均差异:
图片来自Wolfram Mathematica文档。鉴于正确的工具和预先知识,这是一个非常容易的问题(但通常不是这样)。
对于有损图像,您会得到一些看起来像阴影图像的东西。但是,您不需要计算图像,只需要描述差异的双重图像。测试它:
Assert.That(expected, Is.EqualTo(actual).Within(tolerance));
假设您的预期值为0.03,实际值为0.01638489638,容差值为0.005。这将测试图像是否包含具有0.5%错误的97%质量图像。
我希望你发现这很有帮助。