如何在C#单元测试中覆盖图像转换?

时间:2016-05-31 08:59:27

标签: c# .net unit-testing

我们已经编写了一个库,可以为各种文件格式生成缩略图。我喜欢对这个库进行单元测试。它生成JPEG文件。

我如何对图像转换进行单元测试?当JPG使用有损格式时,如何检查两个图像是否相似?

Microsoft TestTools有一个ImageCompare课程,但我不确定它是否适合我的个人资料。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

首先,您的单元测试不会暴露实际的实现。你使用嘲笑。目标应该是验证调用方法并给出模拟实现返回预期结果。

人们经常将单元测试与集成测试混合在一起,并且总体上存在责任问题。你所描述的似乎是一个集成测试。

一种方法是创建一个ImageDifference函数来获得平均差异: enter image description here enter image description here

  

图片来自Wolfram Mathematica文档。鉴于正确的工具和预先知识,这是一个非常容易的问题(但通常不是这样)。

对于有损图像,您会得到一些看起来像阴影图像的东西。但是,您不需要计算图像,只需要描述差异的双重图像。测试它:

Assert.That(expected, Is.EqualTo(actual).Within(tolerance));

假设您的预期值为0.03,实际值为0.01638489638,容差值为0.005。这将测试图像是否包含具有0.5%错误的97%质量图像。

我希望你发现这很有帮助。