c++ - 全局变量影响单元测试结果的问题

标签 c++ c unit-testing visual-studio-2017 global-variables

我在 Visual Studio 2017 中为嵌入式软件创建了一个单元测试,其中包含 native 单元测试项目,它是用C 代码编写的。该软件有许多参数是全局变量,可从整个系统访问。

这会产生单元测试(例如燃料监控)也会影响发动机控制单元测试的问题。如果我单独运行单元测试,它会按预期工作。

所以我的问题是,在方法之间运行测试时,是否有一种简单的方法可以重新启动应用程序?因此,我可以更好地控制更改了哪些参数,而不必担心添加的新方法会影响现有的单元测试用例。

最佳答案

处理此问题的一种方法是在每次测试开始时设置一个阶段,将所有全局变量设置为预定值。

所以你会在每次测试开始时调用一个函数:

 SetGlobals( struct { a = ....}), 

在其中传入一个结构,其中包含您关心的所有变量。

那么每个测试都应该有一致的行为,并且所有变量都将被重置为测试之间的正确值。 (当然,如果您尝试对测试运行程序进行多线程处理,您仍然会遇到问题)

关于c++ - 全局变量影响单元测试结果的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816602/

相关文章:

.net - 我应该如何模拟这个简单的服务层方法?

python - 使用 pytest,为什么单个测试结果与运行所有测试不同?

c++ - Xerces:如何合并重复节点?

c - 编译时找不到融合函数

c++ - 错误 MSB8024 : Using static version of the C++ runtime library is not supported

c - Linux timerfd> 每 x 秒调用一个函数而不阻塞代码执行

c - 在 C 中使用带有 RSA 的 SHA1 对数据数组进行签名

maven - 如何使用 mvn site 命令生成集成测试报告

c++ - 为什么我不能调用以下代码的 C++ 显式特化版本?

c++ - 如何处理鼠标右键单击 QSystemTrayIcon?