涵盖特定功能的gtest测试列表

时间:2018-01-25 09:45:29

标签: c++ visual-studio-2015 googletest googlemock

我有一个VS2015 C ++项目和使用googletest / googlemock编写的数千个测试并打包成一个可执行文件。

我如何知道哪些测试和测试用例涵盖特定功能?

例如,我的测试包由TestSuite0,TestSuite1,TestSuite2组成,每个测试套件包含许多测试--Test0,Test2,Test3等。我想知道的是哪些测试覆盖了MyFunc()函数。我想运行所有的测试,得到类似的东西:

Function MyFunc() is covered by:
TestSuite0.Test3
TestSuite0.Test8
TestSuite1.Test0
TestSuite1.Test2
TestSuite2.Test345

使用VS2015和/或gtest是否有任何技巧?

2 个答案:

答案 0 :(得分:0)

单元测试测试的结构通常与代码相同。您可以通过测试和测试套件名称找到运行的内容。并且只进行某些测试。

多少次测试通过单一功能?您可以在函数中设置断点。当遇到断点时,请查看Visual Studio的调用堆栈窗口以查看它来自哪个测试。 您还可以使用断点编写堆栈跟踪而不是停止程序。然后,您可以在运行整个测试套件后检查输出。

不幸的是,没有这样的自动C ++语言或基于Google测试的功能来告诉使用某些代码/行/功能的测试。假设这种思考涉及C ++代码检测。

答案 1 :(得分:0)

这取决于特定测试用例的编写方式。但是,在确定要运行的各个测试用例时,--gtest_filter会很方便。

测试套装通常与在Class上进行测试相关联, 但是,单个测试用例与特定成员函数(MyFunc())相关联。有多个单独的测试用例可以验证同一成员函数(MyFunc())的不同执行路径。

所以考虑上面, 您可以在Test Suit中找到多个测试用例。

TestSuite1.MyFunc
TestSuite1.MyFuncInvalidArgument
TestSuite1.MyFuncPerformanceCheck

使用gtest运行时可以使用

  

--gtest_filter=TestSuite1.MyFun*

如果该功能已遍布多个testSuit,您也可以添加此过滤器。

  

--gtest_filter=TestSuite1.MyFun*:TestSuite0.MyFunc*

如果现有的测试用例和测试套件不遵循此推荐模式,那么您必须搜索测试套件并识别单个测试用例并将其与--gtest_filter一起使用

How to specify multiple exclusion filters in --gtest_filter?