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

标签 c# .net unit-testing

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

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

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

最佳答案

首先,您的单元测试没有公开实际的实现。你使用模拟。目标应该是验证方法是否被调用并且给定的模拟实现返回预期结果。


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

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

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/

相关文章:

.net - 优化每分钟大量数据库请求的应用程序

c# - 事件如何比委托(delegate)更强大

objective-c - 在命令行(OCUnit + OCMock)上运行 iOS 单元测试

c# - 将用户登录到不同的 URL

c# - CommandHandler 装饰器依赖

javascript - 有 promise 的 Angularjs 单元测试服务

c# - 如何使用 HttpContext 创建单元测试以在方法内进行授权?

c# - 从两个单独的集合中配对有限数量的随机元素的有效方法

javascript - 在 ASP.NET C# 中获取 StackOverFlow 异常

c# - 网络凭据未保存在 CredentialCache 中