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

Dustin Wilhelmi picture Dustin Wilhelmi · Jan 14, 2016 · Viewed 11.7k times · Source

Using Google Test, I need a way to verify that a string that was returned by my class under test does not contain a particular string. I can currently test that a string does contain another string by using EXPECT_THAT and MatchesRegex; however, I don't know how to build a valid POSIX Extended regular expression for not containing a word, and I don't know how to negate a MatchesRegex call.

I tried doing a regex I found here on SO:

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

but that gives me an error:

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

Any other suggestions on how I could do this?

Answer

Antonio Pérez picture Antonio Pérez · Jan 15, 2016

You can combine matchers HasSubstr and Not so your code would look like:

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

Check Google Mock documentation for matchers for full reference.