红宝石 – 单元测试复制功能还是测试输出?

栏目: 编程工具 · 发布时间: 6年前

内容简介:代码日志版权声明:翻译自:http://stackoverflow.com/questions/2482373/should-a-unit-test-replicate-functionality-or-test-output

我已经遇到这个困境了好几次.我的单元测试是否重复了他们测试的方法的功能以验证其完整性?或者单位测试是否尝试通过大量手动创建的输入和预期输出实例来测试该方法?

我主要提出的问题是,您正在测试的方法是相当简单的,并且正确的操作可以通过扫视代码一分钟来验证.

简化例子(红宝石):

def concat_strings(str1, str2)
  return str1 + " AND " + str2
end

上述方法的简化功能 – 复制测试:

def test_concat_strings
  10.times do
    str1 = random_string_generator
    str2 = random_string_generator
    assert_equal (str1 + " AND " + str2), concat_strings(str1, str2)
  end
end

我明白,大多数情况下,您测试的方法不会简单到足以证明这样做.但我的问题依然存在;在某些情况下,这是一种有效的方法(为什么或为什么不)?

这是一个有争议的立场,但我相信 unit testing using Derived Values

远远优于使用任意硬编码的输入和输出.

问题是,由于算法变得更加复杂,如果用硬编码的值表示,则输入和输出之间的关系变得模糊.单位测试最终是一个假设.它可能在技术上工作,但是由于导致了 Obscure Tests ,它会损害测试的可维护性.

使用 Derived Values 测试结果可以确定测试输入与预期输出之间的更清晰的关系.

这个没有测试任何东西的论据根本不是真的,因为任何测试用例只会运行通过SUT的路径的一部分,所以没有一个测试用例将重现整个被测试的算法,但测试的组合将会所以.

另外一个好处就是你可以在 use fewer unit tests to cover the desired functionality ,甚至让他们更多的交流在同一时间.最终的结果是更简单和更可维护的单元测试.

代码日志版权声明:

翻译自:http://stackoverflow.com/questions/2482373/should-a-unit-test-replicate-functionality-or-test-output


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

最优状态估计

最优状态估计

[美] D. 西蒙 / 张勇刚、李宁、奔粤阳 / 国防工业出版社 / 2013-5-1 / 68.00元

《最优状态估计——卡尔曼H∞及非线性滤波》共分为四个部分,全面介绍了最优状态估计的理论和方法。第1部分为基础知识,回顾了线性系统、概率论和随机过程相关知识,介绍了最小二乘法、维纳滤波、状态的统计特性随时间的传播过程。第2部分详细介绍了卡尔曼滤波及其等价形式,介绍了卡尔曼滤 波的扩展形式,包括相关噪声和有色噪声条件下的卡尔曼滤波、稳态滤波、衰减记忆滤波和带约束的卡尔 曼滤波等。第3部分详细介绍了H∞......一起来看看 《最优状态估计》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具