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

Change-detector tests, data encapsulation and data actually necessary for a function to operate

本文关键字:数据 运行 功能 检测器 测试 数据封装      更新时间:2023-10-16

这个问题受到这篇文章的启发:http://googletesting.blogspot.ru/2015/01/testing-on-toilet-change-detector-tests.html

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

如果我们考虑到上面的文章和指南,那么从重写函数是合乎逻辑的

void someFunc(int param1, int param2)

void someFunc(Object o) 

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

somefunc(o.param1, o.param2);

现在它变成了

somefunc(o);

因此,传递一个对象而不是单独的params,为我们提供了一些保护,以防我们可能需要o.param3在以后的函数中使用。但是这是否与职能部门不应收到超过其运作所需信息的指导方针相矛盾?我当然记得几年前读过这样的文章。

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

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

关于一个param的想法是,应该将params包装到struct/class中。如果函数中的参数较少,那么要测试的排列也较少。查看Robert C.Martin的《清洁代码》一书。