C++11 issue with GTest
C++11 issue with GTest
我正在为应用程序编写单元测试。我在构造函数上有一些例外,所以我写了这篇文章:
TEST(Tablier, ConstructeurParamInvalide2)
{
ASSERT_THROW(Tablier t_tablier{10, 65} , PreconditionException);
}
当我编写这篇文章时,似乎不满足Macro 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语法通过。知道什么可能是什么?
这应该有效:
ASSERT_THROW(Tablier t_tablier(10, 65) , PreconditionException);
ASSERT_THROW(Tablier (10, 65) , PreconditionException);
由于宏扩展认为10到65之间的逗号是宏参数定界符。括号在那里告诉编译器哪一个是定界符。
来自cpp.replace
由最外部匹配括号界定的预处理令牌的顺序构成了函数样宏的参数列表。列表中的单个参数通过逗号预处理令牌进行分开,但是逗号预处理令牌之间的匹配内括号之间的代币不会分开参数。
相关文章:
- Problems with std::cin.fail()
- 在gtest.中使用fff.h模拟系统API
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 如何解决GTest和LibTorch联动冲突
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- 如何将GTest与CMake一起使用?遵循谷歌指南时的链接问题
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- 在 gtest 中初始化堆栈上的引用变量的隔离错误
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- GTest,仅参数化测试用例
- DLL Made with CMake 使程序崩溃
- C++11 issue with GTest
- CMakeLists C program with gtest(C++)