我想使用Address Sanitizer在单元测试运行时检测运行时错误。但是,Address Sanitizer在找到第一个错误时终止应用程序,因此我无法在一个报告中看到所有发现的运行时错误的信息。如果我可以运行彼此隔离的谷歌测试,并且终止一个测试不会影响其他测试。
答案 0 :(得分:1)
您可以逐个在Google Test中运行特定的测试用例。
默认情况下,Google Test程序会运行用户定义的所有测试。 有时,您只想运行一部分测试(例如 调试或快速验证更改)。如果设置GTEST_FILTER 环境变量或--gtest_filter标志到过滤字符串, Google Test只会运行全名的测试(以。的形式) TestCaseName.TestName)匹配过滤器。
过滤器的格式是一个':' - 分隔的通配符模式列表 (称为积极模式)可选地后跟一个' - '和 另一个':分离模式列表(称为负模式)。一个 当且仅当它与任何正数匹配时,test匹配过滤器 模式,但不匹配任何负面模式。
模式可能包含' ' (匹配任何字符串)或'?' (匹配任何 单个字符)。为方便起见,过滤器' -NegativePatterns' 也可以写成' -NegativePatterns'。
例如:
./ foo_test没有标志,因此运行所有测试。
./ foo_test --gtest_filter = *由于单一,所以也运行一切 match-everything * value。
./ foo_test --gtest_filter = FooTest。*在测试用例中运行所有内容 FooTest。
./ foo_test --gtest_filter = Null :构造函数运行任何其测试 全名包含" Null"或"构造函数"。
./ foo_test --gtest_filter = - DeathTest。运行所有非死亡测试。
./ foo_test --gtest_filter = FooTest。* - FooTest.Bar运行所有内容 测试用例FooTest除了FooTest.Bar。