1
我们在2种不同的配置下构建一个MSVC++单元测试项目,以针对不同的实现运行相同的测试。由于每个测试运行两次,我们使用预处理丑陋破解测试名称:多级预处理器宏搞乱字符串输出
#if defined(XXX)
#define _VER BUILDX
#elif defined(YYY)
#define _VER BUILDY
#endif
#define _TEST_SUITE_NAME_PACKAGE(Suite,Package) Suite##_##Package
#define TEST_SUITE_NAME_PACKAGE(Suite,Package) _TEST_SUITE_NAME_PACKAGE(Suite,Package)
#define TEST_SUITE_NAME(Suite) TEST_SUITE_NAME_PACKAGE(Suite,_VER)
#define TEST(test_case_name, test_name) GTEST_TEST(TEST_SUITE_NAME(test_case_name), test_name)
这一切都完美的作品,重新定义谷歌测试TEST
宏修改使用字符串化的招数测试套件的名称。
但下面不不工作:使用TEST(StringTestSuite,EqualityTest)
,使用TEST_F
#define TEST_F(test_fixture, test_name)\
GTEST_TEST_(TEST_SUITE_NAME(test_fixture), test_name, test_fixture, \
::testing::internal::GetTypeId<test_fixture>())
相反的输出像StringTestSuite_XXX.EqualityTest
使输出,如:
TEST_SUITE_NAME(StringTestSuite).EqualityTest
我能得到这个与一些工作简单的调整?
仅供参考,这里是最新的GTEST_TEST_的代码。而在gtest.h,GTEST_TEST
被定义为:
#define GTEST_TEST(test_case_name, test_name)\
GTEST_TEST_(test_case_name, test_name, \
::testing::Test, ::testing::internal::GetTestTypeId())
并说下一个程序员的祈祷.... – NicholasM 2014-09-15 00:39:37