私はアプリケーションの単体テストを書いています。私は、コンストラクタでいくつかの例外を持っているので、私はこれを書いた:私はこれを書くときGTestでC++ 11の問題
TEST(Tablier, ConstructeurParamInvalide2)
{
ASSERT_THROW(Tablier t_tablier{10, 65} , PreconditionException);
}
が、マクロASSERT_THROWが成立していないようで、テストが失敗しました。
がTEST(Tablier, ConstructeurParamInvalide2)
{
ASSERT_THROW(Tablier t_tablier(10, 65) , PreconditionException);
}
マクロが正常に動作し、テストに合格した:私はこれを書いた場合、Tablier t_tablier{10; };
代わり
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()
注意:ここではマクロ展開です。私のプロジェクトとコンパイラはC++ 11用に設定されており、他の多くのテストはC++ 11の構文を使って渡されます。どのような問題が起こる可能性がありますか?
よろしく
可能な重複は(http://stackoverflow.com/questions/30372148/passing-an-initialization-list-to-a-macro) – neuront