我想了解在C++中设计可测试应用程序的最佳方法,也许与C#相比(因为它是我的背景,适合测试)。
我习惯于对接口、依赖注入、控制框架的反转和模拟对象进行编码。由于C#有许多不同的语言特性,所以我不确定这些模式应该应用多少。我还设想C++的独特特性/限制可能会导致不同的测试策略。
我看过单元测试框架,我喜欢谷歌测试,但是编写新的代码以尽可能地测试也是很重要的。
谢谢
发布于 2013-05-03 15:30:30
我自己也处于同样的情况,现在。来自C#背景,现在我正在编写新的(并扩展遗留的) C++应用程序。
我想,共同的背景给我们留下了共同的问题。我感到惊讶的是,在遗留应用程序中,我们的类之间的依赖关系是如此紧密。
正如您所强调的那样,需要关注的是,在C#中的最佳实践可能不是C++中的最佳方法。经过大量的研究,一些堆栈溢出了我自己的问题,还有一些原型,我最终得到了一个C++体系结构,它在很多方面反映了我在C#中最成功的地方。
以下是我使用的主要原则:
发布于 2012-03-13 03:42:52
我使用过CPP股,它是JUnit的一个端口。它非常容易使用,并以XML格式提供输出,这是很棒的。至于如何使用它,您可以使用看看这里的食谱。
发布于 2013-05-03 15:49:10
在某些情况下,我看到您提到的所有技术(对接口的编码、依赖注入、控制框架的反转和模拟对象)都被滥用,最终使事情变得更加困难。虽然这些技术可以得到很好的利用,但有时我看到它们被宣传,好像它们是通向质量的唯一道路。我不同意。
在我看来,保证C++中代码质量的最重要的开发技术是使用面向对象技术(),如模块化、开放-封闭原则、自文档化、命令-查询分离等。
特别是,我认为必不可少的两种技术是Design (见问题在C++中实现断言检查的最佳方法是什么?和C++中的按合同设计?)和UnitueTesting(参见相关问题1、2、3.)。对于它们,您在C++中都有合理的工具,如链接的问题所示。
https://stackoverflow.com/questions/9678035
复制相似问题