【发布时间】:2016-11-29 23:12:47
【问题描述】:
我正在为应用程序编写单元测试。我在构造函数中有一些异常,所以我写了这个:
TEST(Tablier, ConstructeurParamInvalide2)
{
ASSERT_THROW(Tablier t_tablier{10, 65} , PreconditionException);
}
当我写这篇文章时,似乎宏 ASSERT_THROW 不满足,测试失败。这是宏扩展:
switch (0) case 0: default: \
if (::testing::internal::ConstCharPtr gtest_msg = "") { \
bool gtest_caught_expected = false; \
try { \
if (::testing::internal::AlwaysTrue()) { Tablier t_tablier{10; }; \
} \
catch (65} const&) { \
gtest_caught_expected = true; \
} \
catch (...) { \
gtest_msg.value = \
"Expected: " "Tablier t_tablier{10" " throws an exception of type " \
"65}" ".\n Actual: it throws a different type."; \
goto gtest_label_testthrow_76; \
} \
if (!gtest_caught_expected) { \
gtest_msg.value = \
"Expected: " "Tablier t_tablier{10" " throws an exception of type " \
"65}" ".\n Actual: it throws nothing."; \
goto gtest_label_testthrow_76; \
} \
} else \
gtest_label_testthrow_76: \
return ::testing::internal::AssertHelper(::testing::TestPartResult::kFatalFailure, "/home/eric/Programming/cpp/Puissance4/pxTestsUnitaires/tests/test_Tablier.cpp", 76, gtest_msg.value) \
= ::testing::Message()
请注意Tablier t_tablier{10; };,如果我这样写:
TEST(Tablier, ConstructeurParamInvalide2)
{
ASSERT_THROW(Tablier t_tablier(10, 65) , PreconditionException);
}
宏工作正常,测试通过。我的项目和编译器针对 C++11 进行了配置,并且许多其他测试使用 C++11 语法通过。知道可能是什么问题吗?
【问题讨论】:
标签: c++ c++11 googletest