Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 更改探测器测试、数据封装和功能运行所需的实际数据_C++_Unit Testing - Fatal编程技术网

C++ 更改探测器测试、数据封装和功能运行所需的实际数据

C++ 更改探测器测试、数据封装和功能运行所需的实际数据,c++,unit-testing,C++,Unit Testing,这篇文章启发了这个问题: 简言之,它不鼓励我们编写在更改函数中的接口时中断的测试,迫使我们浪费时间重写每个调用以匹配新的签名 如果我们考虑到上面的文章和指南,那么从 void someFunc(int param1, int param2) 到 事实上,该函数最初可能被称为: somefunc(o.param1, o.param2); 现在它变成了 somefunc(o); 因此,传递一个对象而不是单独的参数,可以为以后可能需要在函数中使用o.param3的情况提供一些保护。 但是这是否

这篇文章启发了这个问题:

简言之,它不鼓励我们编写在更改函数中的接口时中断的测试,迫使我们浪费时间重写每个调用以匹配新的签名

如果我们考虑到上面的文章和指南,那么从

void someFunc(int param1, int param2)

事实上,该函数最初可能被称为:

somefunc(o.param1, o.param2);
现在它变成了

somefunc(o);
因此,传递一个对象而不是单独的参数,可以为以后可能需要在函数中使用o.param3的情况提供一些保护。 但是这是否与职能部门不应收到超过其操作所需信息的指导方针相矛盾?我当然记得几年前读过类似的东西

如果一个对象有这个函数永远不需要的param4和param5,那么根据这个准则,传递整个对象似乎是不正确的


正确的思考方式是什么?我才刚刚开始真正进入单元测试,像这样的东西让我有点困惑。另外,我有点觉得我完全误解了那篇文章的意思…

关于一个参数的想法是,应该将参数包装到struct/class中。如果函数中的参数较少,则需要测试的置换也较少。
查看罗伯特·C·马丁的《清洁代码》一书

但是,我们不是在深入研究每个函数需要自己的输入结构的领域吗?(或者我们冒着暴露额外数据的风险,因为它不需要操作)阅读您建议的书。是的,这绝对是一个好方法如果你想更好地测试你的函数,它们需要非常小。你不会为你的每一个函数创建struct,这不是重点。试着编写只在某些事情上工作的函数。阅读这本书并开始测试代码,然后当你的函数更小、参数更少时,你就会注意到它的优势。
somefunc(o);