局部可变单元测试

Local Variable Unit Testing

本文关键字:单元测试 局部      更新时间:2023-10-16

我正在用C++进行编码,并且正在对一个函数进行单元测试。这个函数有一个回调,因为我正在使用GoogleTest从外部源文件测试它。我想不出在函数内部测试某个局部变量的方法。函数在自己内部创建一个类指针变量,并在函数末尾删除它。如果我将局部变量声明移动到整个类的.h中,它运行得很好,并且我可以对局部变量执行任何我想要的操作,而不管它最终被删除。所以我的问题是,考虑到我不被允许更改原始设置,有没有一种方法可以让任何人知道通过一些棘手的逻辑或编程巫毒来访问本地变量的信息?欢迎提出任何建议!此外,有问题的指针对象指向其类中的方法,并通过输入进行数据操作。例如:pointerA->setWidth(int,int);我需要谈谈这个要点A。

foo(int number, int num) {
   classA* pointerA = new classA;  
   pointerA->setWidth(number, num);  
   //other data manipulations  
   delete pointerA;
}

测试示例:

2 的EXPECT_EQ(pointerA->setWidth(returns width), 2); //checks to see if it returns正确值

另外,我希望能够在不更改任何代码的情况下完成这项工作的原因是,我希望让它自动化,并在每次编译代码时运行测试。这就是我为所有其他测试设置的方式,但他们没有本地vars。

您不应该测试局部变量的值。这是当地的。它在功能内部之外没有可观察的行为,因此是单元本身的一部分。

相反,您应该测试该函数是否为某些输入生成正确的输出。在这种情况下,这确实是你想要做的正确的输出是构造了一个classA,并且它的"宽度"由被测函数正确设置。

通过mockingclassA来实现这一点:为其成员函数提供一个替代定义,并为测试代码提供一种检查其测试后状态的方法。

classA而不是局部变量,所以您问错了问题