Google 测试 - 测试字符串不包含字符串

Google Test - Test that a string does not contain a string

使用 Google 测试,我需要一种方法来验证被测试的 class 返回的字符串不包含特定字符串。我目前可以使用 EXPECT_THAT 和 MatchesRegex 测试一个字符串是否包含另一个字符串;但是,我不知道如何构建一个有效的 POSIX 不包含单词的扩展正则表达式,而且我不知道如何否定 MatchesRegex 调用。

我试着做一个我在 SO 上找到的正则表达式:

EXPECT_THAT(returnedString, MatchesRegex("^(?!.*badword).*$"));

但这给了我一个错误:

Regular expression "^(?!.*badword).*$" is not a valid POSIX Extended regular expression.

关于如何执行此操作还有其他建议吗?

您可以组合匹配器 HasSubstrNot,这样您的代码将如下所示:

EXPECT_THAT(returnedString, Not(HasSubstr("badword")));

检查 Google 模拟 documentation for matchers 以获得完整参考。