我有一个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是否有任何技巧?
答案 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?