这个问题的灵感来源于这篇文章: http://googletesting.blogspot.ru/2015/01/testing-on-toilet-change-detector-tests.html
简而言之,它阻止我们编写在我们更改函数界面时破坏的测试,迫使我们浪费时间重写每个调用以匹配新签名。
如果我们考虑上述文章和指南,从
重写函数就变得合乎逻辑puma
到
void someFunc(int param1, int param2)
实际上,最初该函数可能被称为:
void someFunc(Object o)
现在变成了
somefunc(o.param1, o.param2);
因此,传递一个对象而不是单独的params,为我们可能需要o.param3以便稍后在函数中使用的情况提供了一些保护。 但是.....它是否与指南相矛盾,即功能不应该获得比他们需要操作更多的信息?我当然记得几年前读过这样的东西。
如果一个对象具有该函数永远不需要的param4和param5,那么根据本指南传递整个对象似乎是不正确的......
考虑它的正确方法是什么?我才开始真正进入单元测试,像这样的东西对我来说有点混乱。而且,我有点觉得我完全误解了那篇文章的重点......
答案 0 :(得分:1)
关于一个参数的想法是你应该将你的参数包装到struct / class中。如果函数中的参数较少,则测试的排列较少。 检查"清洁代码"罗伯特C.马丁的书。