如何解决如何检查Google Test是否在我的代码中运行
| 如果单元测试中,我有一段代码不希望运行。我希望找到一些我可以检查的gtest库设置的#defined标志。我找不到用于该目的的应用程序,但是在浏览了gtest标头后,我发现了一个我可以使用的示例:SomeClass::SomeFunctionImUnitTesting() {
// some code here
#ifndef GTEST_NAME
// some code I don\'t want to be tested here
#endif
// more code here
}
这似乎不起作用,因为所有代码都会运行。我可以检查另一个标志是否可行?
解决方法
Google测试不需要或提供自己的构建包装器。您甚至不必有时重新编译源文件。您可以将它们与您的测试代码链接在一起。您的测试代码将调用您已经编译的库代码。您的库代码可能甚至不包含和Gtest标头。
如果希望库代码在测试下以不同的方式运行,那么首先需要确保库代码在测试下以不同的方式编译。您将需要另一个构建目标。为该构建目标进行编译时,您可以定义一个符号,向您的代码指示其处于测试模式。我会避免为该符号加上“ 1”前缀;留给Google自己的代码使用。
实现您正在寻找的另一种方法是使用依赖注入。将您的特殊代码移动到另一个例程中,可能在其自己的类中。将指向该函数或类的指针传递到
SomeFunctionImUnitTesting
函数中并调用它。在测试该代码时,可以使您的测试工具将不同的函数或类传递给该代码,从而避免了有问题的代码,而无需多次编译代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。