我有一段代码,如果正在进行单元测试,我不想运行它。我希望找到一些由 gtest 库设置的 #define 标志,我可以检查。我找不到用于此目的的一个,但在查看 gtest 标头后,我找到了一个我认为可以像这样使用的:
SomeClass::SomeFunctionImUnitTesting() {
// some code here
#ifndef GTEST_NAME
// some code I don't want to be tested here
#endif
// more code here
}
这似乎不起作用,因为无论如何,所有代码都会运行。我可以检查另一个可能有效的标志吗?
Google Test 不需要或提供自己的构建包装器。有时您甚至不必重新编译源文件。您只需将它们与您的测试代码链接起来即可。您的测试代码调用已编译的库代码。您的库代码可能甚至不包含 Gtest 标头。
如果您希望您的库代码在测试下以不同的方式运行,那么您首先需要确保您的库代码是compiled不同的测试下。您将需要另一个构建目标。在针对该构建目标进行编译时,您可以定义一个符号来指示您的代码处于测试模式。我会避免GTEST
该符号的前缀;留给Google自己的代码使用。
实现您正在寻找的目标的另一种方法是使用依赖注入。将您的特殊代码移动到另一个例程中,可能在它自己的类中。将指向该函数或类的指针传递给您的SomeFunctionImUnitTesting
函数并调用它。当您测试该代码时,您可以让测试工具将不同的函数或类传递给该代码,从而避免出现有问题的代码,而无需多次编译代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)