局部变量单元测试

时间:2015-12-31 17:52:47

标签: c++ unit-testing

我用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;
}

测试示例:

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

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

1 个答案:

答案 0 :(得分:1)

您不应该测试局部变量的值。它是本地的。它没有超出函数内部的可观察行为,因此是单元本身的一部分。

相反,您应该测试该函数为某些输入生成正确的输出 。在这种情况下,这确实是你正在尝试做的事情。正确的输出是构造classA及其宽度&#34 34;由被测功能正确设置。

通过模拟 classA实现此目的:为其成员函数提供备用定义,以及测试代码检查其测试后状态的方法。

classA 是一个局部变量,所以你问的是错误的问题。