如何运行谷歌测试完全相互隔离?

时间:2017-11-15 08:10:52

标签: c++ googletest address-sanitizer

我想使用Address Sanitizer在单元测试运行时检测运行时错误。但是,Address Sanitizer在找到第一个错误时终止应用程序,因此我无法在一个报告中看到所有发现的运行时错误的信息。如果我可以运行彼此隔离的谷歌测试,并且终止一个测试不会影响其他测试。

1 个答案:

答案 0 :(得分:1)

您可以逐个在Google Test中运行特定的测试用例。

来自:https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#running-a-subset-of-the-tests

  

默认情况下,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。