我正在尝试在C++中实现一个测试环境,但似乎比我预期的要难得多。看起来我有三个选择:
1) 通过接口注入依赖关系。
2) 通过模板注入依赖关系 这些选项的详细讨论可以在这里找到: C++中使用接口和模板进行依赖注入 3) 为每个需要模拟/存根的测试制作不同的可执行文件。
选项1和2需要对源代码进行大量修改,这并不是我喜欢的。我不应该为了测试而牺牲性能/清晰度。另一方面,为每个测试制作不同的项目也不太好。
我可以接受选项3带来的开销,但我有一个无法解决的大问题: 我没有找到任何工具可以从多个不同的测试可执行文件报告有效的代码覆盖率。合并测试结果从未考虑过在一个测试中测试的行可能与在另一个测试中测试的行相同。
例如,我尝试寻求关于Visual Studio提供的代码覆盖率的帮助,但是我没有找到任何帮助: 来自多个不同单元测试项目的Visual Studio代码覆盖率。
那么,选项1和2是我唯一有效的选项,还是有一些我不知道能做我想要的事情的工具?
我的问题并非重复适用于本机C++的Visual Studio 2013 Professional的代码覆盖报告。我完全能够为一个测试可执行文件生成代码覆盖率报告。我无法生成多个测试项目的连贯报告。
例:我有我的ProjectA,有两个不同的测试项目(TestProjectA和TestProjectB)。如果我的ProjectA包含10个块,visual studio代码覆盖率将返回类似于覆盖了7个块(而不是10个)的20个块的结果,因为它没有意识到TestProjectA和TestProjectB正在测试同一代码。
1) 通过接口注入依赖关系。
2) 通过模板注入依赖关系 这些选项的详细讨论可以在这里找到: C++中使用接口和模板进行依赖注入 3) 为每个需要模拟/存根的测试制作不同的可执行文件。
选项1和2需要对源代码进行大量修改,这并不是我喜欢的。我不应该为了测试而牺牲性能/清晰度。另一方面,为每个测试制作不同的项目也不太好。
我可以接受选项3带来的开销,但我有一个无法解决的大问题: 我没有找到任何工具可以从多个不同的测试可执行文件报告有效的代码覆盖率。合并测试结果从未考虑过在一个测试中测试的行可能与在另一个测试中测试的行相同。
例如,我尝试寻求关于Visual Studio提供的代码覆盖率的帮助,但是我没有找到任何帮助: 来自多个不同单元测试项目的Visual Studio代码覆盖率。
那么,选项1和2是我唯一有效的选项,还是有一些我不知道能做我想要的事情的工具?
我的问题并非重复适用于本机C++的Visual Studio 2013 Professional的代码覆盖报告。我完全能够为一个测试可执行文件生成代码覆盖率报告。我无法生成多个测试项目的连贯报告。
例:我有我的ProjectA,有两个不同的测试项目(TestProjectA和TestProjectB)。如果我的ProjectA包含10个块,visual studio代码覆盖率将返回类似于覆盖了7个块(而不是10个)的20个块的结果,因为它没有意识到TestProjectA和TestProjectB正在测试同一代码。