我是否必须对参数可能采用的每个值进行单元测试?

时间:2016-01-26 10:40:40

标签: php unit-testing

例如,如果我有一个执行简单逻辑的方法并在输入中获取一个int参数,那么在输入时我是否需要单元测试用例:

  • 一个好的int(比如1)
  • 一个坏的int(如822873873824676372732367232637233)
  • 下降漂浮
  • 一个糟糕的漂浮物
  • a bool
  • 一个字符串
  • 无参数

嗯,我想我已经知道了答案,但限制在哪里?

此外,当方法有A和B参数时,我是否必须通过这些方法测试可能发生的每种情况? :

  • testGoodAWithoutB
  • testGoodBWithoutA
  • testGoodAWithGoodB
  • testBadAWithoutB
  • testGoodAWithBadB
  • ...

1 个答案:

答案 0 :(得分:0)

你的问题的答案是:不,当然不是。

测试每个可能的值是没有意义的。如果您正在使用单元测试,我想您正试图尽可能地清除您的代码。为此,您的功能应遵循single responsibility principle

如果你的功能只是一个功能,那么就可以轻松测试它。

这还取决于你的功能可以期待什么。当你有一个函数add(a, b)时,它取决于你的程序内的上下文。在函数调用之前完成错误处理并且您确定始终获得有效值时,无需对此进行测试,因为您的函数不对此负责。如果相同的函数是例如公共方法,则该函数必须检查输入值。在这种情况下,你也应该测试一下。

您需要记住,您的测试必须适用于人类。如果您正在测试未来100年可能发生的一切,那么测试将不那么容易理解。

您的测试也应该类似于其他程序员的文档。所以只需测试你的函数,就像调用你的函数一样。