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

时间:2018-06-12 11:56:21

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

我已在Visual Studio 2017中为嵌入式软件创建了本机单元测试项目的单元测试,该 C代码。该软件有许多参数全局变量,可以从整个系统访问。

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

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

2 个答案:

答案 0 :(得分:1)

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

因此,您可以在每次测试开始时调用函数:

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

你传入一个包含你关心的所有变量的结构。

然后每个测试应该具有一致的行为,并且所有变量都将重置为测试之间的正确值。 (当然,如果你尝试多线程测试运行器,你仍会遇到问题)

答案 1 :(得分:0)

我假设您正在寻找不需要重新设计代码的解决方案。

管理此方法的一种方法是在调试模式下运行单元测试,方法是设置断点,以便在到达新方法时手动更改全局变量的值。

我之前在不同的上下文中使用过这种方法,但是,我不知道你是否可以在嵌入式应用程序的调试模式下运行。如果你这样做,请记得在测试后重新编译应用程序以删除-g参数。