gtest(Google Test)是一个流行的C++测试框架。通过使用–gtest_filter标志,你可以根据测试的名称运行一部分测试。这在你只想运行特定测试而不是整个测试套件时非常有用。
基本用法
–gtest_filter标志接受一个模式字符串,该字符串包含用-字符分隔的正模式和负模式。
正模式
正模式指定要运行的测试。例如:
./your_test_executable --gtest_filter=FooTest.*
这条命令运行FooTest测试用例中的所有测试。
负模式
负模式指定要排除的测试。例如:
./your_test_executable --gtest_filter=FooTest.*-FooTest.Bar
这条命令运行FooTest测试用例中的所有测试,除了FooTest.Bar。
组合多个模式
你可以使用冒号(:)组合多个模式。例如:
./your_test_executable --gtest_filter=FooTest.*:BarTest.*
这条命令运行FooTest和BarTest测试用例中的所有测试。
示例
# 运行特定测试
# 下面命令只运行FooTest.Bar测试。
./your_test_executable --gtest_filter=FooTest.Bar
# 运行所有测试,除了特定的一个
# 下面命令运行所有测试,除了FooTest.Bar。
./your_test_executable --gtest_filter=-FooTest.Bar
# 运行多个特定测试
# 下面命令运行FooTest.Bar和FooTest.Baz。
./your_test_executable --gtest_filter=FooTest.Bar:FooTest.Baz
# 运行测试套件中的所有测试,除了几个
# 下面命令运行FooTest测试用例中的所有测试,除了FooTest.Bar和FooTest.Baz。
./your_test_executable --gtest_filter=FooTest.*-FooTest.Bar:FooTest.Baz
通配符
- * 匹配任何字符串,包括空字符串。
- ? 匹配任何单个字符。
使用通配符的示例
# 运行测试套件中的所有测试:
./your_test_executable --gtest_filter=FooTest.*
# 运行名称以Bar开头的测试:
./your_test_executable --gtest_filter=FooTest.Bar*
# 运行名称包含Baz的测试:
./your_test_executable --gtest_filter=*Baz*
总结
–gtest_filter标志是控制测试套件中运行哪些测试的强大工具。通过使用正模式和负模式,以及通配符,你可以精确地选择要执行的测试。