gpt4 book ai didi

c++ - 我们应该修改函数签名以进行单元测试吗?

转载 作者:行者123 更新时间:2023-11-27 23:39:40 24 4
gpt4 key购买 nike

假设我们有一个函数 add() 如下:

void add(int a, int b) {
int sum=a+b;
cout<<sum;
sendSumToStorage(sum);
}

这个简单的函数添加输入值,将总和打印到控制台,并将它发送到一些外部存储(比如文件)。这就是我们希望它在应用程序中的理想方式(意思是,我们不希望它返回任何内容)。

出于单元测试的目的,如果我们修改函数签名使其返回 sum 是否有效(从设计角度来看)?然后我们可以进行如下测试:

bool checkAdd() {
int res=add(3, 4);
if(res==7) return true;
else return false;
}

更好的是,这是(返回一个值)我们可以对其进行单元测试的唯一方法吗?是否有一些有效方法可以在不更改函数签名的情况下对 add() 函数进行单元测试?

最佳答案

像您的示例中的函数被认为是非常糟糕的做法。

我为什么这么说?

好吧,您有一个名为add 的方法,它将两个数字相加AND 调用其他方法。基本上你的方法不是做一件事,而是做两件事,这违反了单一职责原则。

这使得测试变得更加困难,因为您不能单独测试 add 方法。

因此,您可以将其分成两个具有良好名称的方法,以反射(reflect)它们的作用并分别测试它们。

如果您不想在方法之间出现状态问题,则必须开始返回有意义的结果。

关于c++ - 我们应该修改函数签名以进行单元测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56373047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com