局部可变单元测试
Local Variable 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;
}
测试示例:
2 的EXPECT_EQ(pointerA->setWidth(returns width), 2); //checks to see if it returns
正确值
另外,我希望能够在不更改任何代码的情况下完成这项工作的原因是,我希望让它自动化,并在每次编译代码时运行测试。这就是我为所有其他测试设置的方式,但他们没有本地vars。
您不应该测试局部变量的值。这是当地的。它在功能内部之外没有可观察的行为,因此是单元本身的一部分。
相反,您应该测试该函数是否为某些输入生成正确的输出。在这种情况下,这确实是你想要做的正确的输出是构造了一个classA
,并且它的"宽度"由被测函数正确设置。
通过mockingclassA
来实现这一点:为其成员函数提供一个替代定义,并为测试代码提供一种检查其测试后状态的方法。
†classA
是而不是局部变量,所以您问错了问题
- 有什么好的方法可以让系统调用代理允许在单元测试中进行模拟
- 在子目录中使用target_sources()命令时用于单元测试(qtest)的项目结构
- VC++本机单元测试,找不到调试符号
- 用于交叉编译和CMake的预处理器宏的单元测试
- C++ 用于单元测试的模板模板
- 提升 1.64 单元测试编译失败
- 单元测试欧拉到四元数实现失败
- 运行 C++ 单元测试时LNK2005链接错误
- 禁用自动捕获 Googletest 单元测试中的C++异常
- 有没有办法在不使用 #ifdef 的情况下不编译发布版本中的单元测试函数体?
- 使用 Google Test 对自定义断言函数进行单元测试
- 如何将我的 CMake 项目配置为运行所有单元测试?
- 在Qt C++单元测试中动态加载QQuickWindow而不是QQuickWidget
- MS 本机单元测试 - 断言::线程失败不起作用
- 如何获取 CMake 单元测试的相对路径?
- QTimer 超时不会在单元测试中触发
- 如何在提升构建中设置环境变量以进行提升单元测试框架?
- 在 AtMega32a 上运行的C++的单元测试
- 使用 gtest 框架在单元测试代码中检查目标对象的私有变量的最佳实践是什么?
- 局部可变单元测试