从查看 gtest 的源代码来看,如果没有可用的参数化测试,唯一的情况是在 Windows 上使用 VC7.1 并禁用异常:
// We don't support MSVC 7.1 with exceptions disabled now. Therefore
// all the compilers we care about are adequate for supporting
// value-parameterized tests.
#define GTEST_HAS_PARAM_TEST 1
那么,您需要检查您的 MinGW 是如何构建的并可能更新它?您可以运行 gtest 单元测试来查看它们是否执行类型化参数测试吗?
有关 MinGW 的更多信息:
在他们的FAQ https://code.google.com/p/googletest/wiki/FAQ#Can_I_use_Google_Test_on_MinGW?他们报告说,当使用 MinGW 时,需要以下编译选项来构建 gtest:PATH/TO/configure CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin"
.
完整示例:
#include <gtest/gtest.h>
namespace EnsembleClustering {
class ParametrizedGTest: public testing::TestWithParam<int> {
public:
ParametrizedGTest();
virtual ~ParametrizedGTest();
};
ParametrizedGTest::ParametrizedGTest() {
}
ParametrizedGTest::~ParametrizedGTest() {
}
TEST_P(ParametrizedGTest, testParameter) {
int n = GetParam();
EXPECT_EQ(n, GetParam());
}
INSTANTIATE_TEST_CASE_P(ParametrizedGTestInstance,
ParametrizedGTest,
::testing::Values(100));
} /* namespace EnsembleClustering */
int main(int argc, char* argv[]) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
我在 Mac OS X 10.8 上使用以下编译器调用编译了此代码:
g++ -IGTEST_INCLUDE_DIR -LGTEST_LIB_DIR -lgtest -o tt2 tt2.cpp
Where GTEST_INCLUDE_DIR
and GTEST_LIB_DIR
是头文件和库文件的存储路径。当你编译并执行时,会发生什么?