我们编写了一个库,可以为各种文件格式生成缩略图。我喜欢对这个库进行单元测试。它生成 JPEG 文件。
如何对图像转换进行单元测试?当 JPG 使用有损格式时,如何检查两张图片是否相似?
Microsoft TestTools有一个 ImageCompare
类,但我不确定它是否适合我的个人资料。有什么想法吗?
最佳答案
首先,您的单元测试没有公开实际的实现。你使用模拟。目标应该是验证方法是否被调用并且给定的模拟实现返回预期结果。
人们经常将单元测试与集成测试混合在一起,并且通常在责任方面存在问题。你描述的似乎是一个集成测试。
一种方法是创建一个 ImageDifference 函数来获得均值差:
Images are taken from Wolfram Mathematica documentation. Given correct tools and pre-knowledge this is a really easy problem (but very often it is not).
在有损图像的情况下,您会得到看起来像阴影图像的东西。但是,您不需要计算图像,只需描述差异的 double 值即可。测试它:
Assert.That(expected, Is.EqualTo(actual).Within(tolerance));
假设您的预期值为 0.03,实际值为 0.01638489638,公差为 0.005。这将测试图像是否包含 97% 的质量图像和 0.5% 的错误。
我希望这对您有所帮助。
关于c# - 如何在 C# 单元测试中涵盖图像转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37541211/