我的文件中有大约 10 个全局函数。需要为他们每个人编写单元测试用例。可以从另一个全局函数调用一个全局函数。
您可以考虑以下三个全局函数。
int bar(int n){
..........
//Could call another global function.
..........
}
int foo(int n){
..........
int b = bar(x);
..........
}
int hut(int n){
..........
..........
int a = foo(x);
..........
..........
int b = hut(y);
..........
..........
}
在测试 hut() 时,foo() 和 bar() 函数应该被模拟。 foo() 和 bar() 也会发生同样的事情。我正在使用 gtest 和 gmock。是否可以使用 gtest 和 gmock?
感谢阅读。
最佳答案
如果它们在同一个文件中,很遗憾没有(理智的)方法来模拟这些全局函数。即使它们不是,您也很难做到这一点(例如,在构建单元测试代码时,将原始代码修改为 #include
模拟 header 而不是真实 header ),并且它将不漂亮,所以我强烈建议您不要这样做。
虽然有一个third party extension添加全局模拟支持,它只有助于创建模拟,但不幸的是,“我如何让我的函数改为调用模拟” 问题。
他们在 this FAQ 中对此进行了介绍甚至提供可能的解决方法 in their Blog - 您可以重写您的代码以“摆脱”静态全局函数并使您的代码可测试。
简而言之:不,没有好的和简单的方法来模拟全局函数(特别是如果它们调用其他全局函数),您最好将代码重构为更可测试的东西。
关于c++ - 如何在 C++ 中使用 gtest/gmock 为调用另一个全局函数的全局函数编写单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53348354/