变更检测器测试,数据封装和功能操作实际所需的数据

时间:2015-06-28 06:45:15

标签: c++ unit-testing

这个问题的灵感来源于这篇文章: 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,那么根据本指南传递整个对象似乎是不正确的......

考虑它的正确方法是什么?我才开始真正进入单元测试,像这样的东西对我来说有点混乱。而且,我有点觉得我完全误解了那篇文章的重点......

1 个答案:

答案 0 :(得分:1)

关于一个参数的想法是你应该将你的参数包装到struct / class中。如果函数中的参数较少,则测试的排列较少。 检查"清洁代码"罗伯特C.马丁的书。