匹配 Google 测试的 ASSERT_DEATH 正则表达式中的行尾

Matching end of line in Google Test's ASSERT_DEATH regex

使用 Google 测试断言包装器的单元测试,可以选择在错误消息中包含 __FILE____LINE__ 信息。

void My_Assert (bool test)
{
#if USE_FILE_MACRO
    std::cerr << "fatal error: false in file __FILE__ at line __LINE__\n"
#else
    std::cerr << "fatal error: false\n"
#endif
    throw std::runtime_error ("Fatal error"); 
}

我想确保此测试文件和行 包括在内,所以我只希望 ASSERT_DEATH 在 "fatal error: false" 上匹配,而不是"fatal error: false in file my_file.cpp at line 42"。 这就是我的开头:

ASSERT_DEATH( try {My_Assert (false);} catch (...){exit(1);}, "fatal error: false" );

我尝试添加一个美元符号来匹配行尾,但在 "fatal error:false" 上不匹配。我尝试了 \s[:space:] 的不同变体,但没有成功。我可能误解了文档,美元符号与 gtest 正则表达式中的行尾不匹配:我无法判断 advanced guide here 中的语句 "matches the end of a string (not that of each line)" 是否仅适用于 Windows正则表达式或所有系统。我正在使用 LLVM 版本 7.3.0 (clang-703.0.31) 为 OSX 编译。

看来你需要在false之后考虑一个换行符,使用false\n

如果您需要匹配行尾和字符串末尾的 false,请使用 ($|\n)