测试具有多种副作用的功能

时间:2015-06-22 16:00:00

标签: unit-testing

考虑这个(bash)函数,它有几个副作用(设置一个全局变量,打印到stdout):

describe() {
  printf '\n%s\n' "$1"

  skip_specs=false
}

它打印到stdout并设置全局变量skip_specs的值。

有哪些优点/缺点:

  • 每个副作用一次测试
  • 两种副作用的一项测试

1 个答案:

答案 0 :(得分:1)

每个副作用一次测试的主要专家:

  • 测试离散功能。
  • 如果有什么东西刹车,你应该立即从破损的测试中知道你需要修理什么。

两种副作用的主要测试对象是:

  • 可能更少的测试,所以更少的代码等。

但如果您的目标是确定如何拆分该功能的测试,那么我认为您提出了错误的问题。我想说真正的问题是你的应用程序将这两种效果视为一个单元。

当未设置变量时,是否将消息写入控制台是否有效?当消息未写入控制台时,是否对要设置的变量有效?如果这两个问题中的任何一个的答案都是肯定的,那么你应该同时测试这两种效果。如果是的话,你应该单独测试它们。

请注意,对于任一情况,测试行为仍可能导致每个效果进行多次测试。因此,即使两种效果一起测试,您仍可能最终进行两次或更多次测试。