我在 Visual Studio 2017 中为嵌入式软件创建了一个单元测试,其中包含 native 单元测试项目,它是用C 代码编写的。该软件有许多参数是全局变量,可从整个系统访问。
这会产生单元测试(例如燃料监控)也会影响发动机控制单元测试的问题。如果我单独运行单元测试,它会按预期工作。
所以我的问题是,在方法之间运行测试时,是否有一种简单的方法可以重新启动应用程序?因此,我可以更好地控制更改了哪些参数,而不必担心添加的新方法会影响现有的单元测试用例。
最佳答案
处理此问题的一种方法是在每次测试开始时设置一个阶段,将所有全局变量设置为预定值。
所以你会在每次测试开始时调用一个函数:
SetGlobals( struct { a = ....}),
在其中传入一个结构,其中包含您关心的所有变量。
那么每个测试都应该有一致的行为,并且所有变量都将被重置为测试之间的正确值。 (当然,如果您尝试对测试运行程序进行多线程处理,您仍然会遇到问题)
关于c++ - 全局变量影响单元测试结果的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50816602/