如何运行彼此完全隔离的谷歌测试

How to run google tests completely isolated from each other?

本文关键字:隔离 测试 谷歌 何运行 运行      更新时间:2023-10-16

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

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

发件人:https://github.com/google/googletest/blob/master/googletest/docs/advanced.md#running-测试的一组用户

默认情况下,谷歌测试程序运行用户定义的所有测试。有时,您只想运行测试的一个子集(例如调试或快速验证更改)。如果设置GTEST_FILTER环境变量或--gtest_ filter标志添加到过滤器字符串,谷歌测试将只运行其全名(以TestCaseName.TestName)匹配过滤器。

过滤器的格式是以":"分隔的通配符模式列表(称为阳性模式)可选地后跟"-"和另一个":"分隔的模式列表(称为负模式)。A.测试匹配筛选器当且仅当它匹配任何阳性图案,但与任何负图案都不匹配。

模式可能包含">"(匹配任何字符串)或"?"(匹配任何单个字符)。为了方便起见,过滤器">-NegativePatterns"也可以写成"-NegativePatterns"。

例如:

/foo_test没有标志,因此运行它的所有测试。

/foo_test--gtest_filter=*由于单个匹配所有*值。

/foo_test--gtest_filter=FooTest.*运行测试用例中的所有内容FooTest。

/foo_test--gtest_filter=Null构造函数运行任何测试全名包含"Null"或"Constructor"。

/foo_test--gtest_filter=-死亡测试运行所有非死亡测试。

/foo_test--gtest_filter=FooTest.*-FooTest.Bar在测试用例FooTest(FooTest.Bar.除外)