单元测试.cpp操作方法

时间:2010-07-31 19:15:09

标签: c++ unit-testing testing

好的。我用c ++完成了屏幕抓取程序。现在我如何对.cpp进行单元测试? 我从哪里开始?

5 个答案:

答案 0 :(得分:9)

有几个单元测试框架可以帮助您测试代码。

退房: Google测试(Google C ++测试框架),可在http://code.google.com/p/googletest/

找到 http://code.google.com/p/googlemock/上的

Google Mock (Google C ++模拟框架)可以帮助您通过为类创建模拟对象来检查应用程序的流程。

(你应该在http://en.wikipedia.org/wiki/Mock_object

阅读Mock对象

如果GoogleTest框架不符合您的需求,您还有另一个名为 CxxTest http://cxxtest.tigris.org/)的替代方案。

祝你好运!

塔尔。

答案 1 :(得分:4)

基本上,您需要做的是获取要测试的模块/类,并将其与系统的其余部分隔离,模拟(假)与任何外部类/ API的所有交互,并验证它是否存在它应该做什么。

通常,您使用“模拟对象”进行此模拟。您设计模拟对象的行为,以便为您的系统(模块/类)测试(SUT)执行不同的操作条件。您可以使用现有的模拟对象框架,或者您可以通过创建实现SUT使用的所有接口的对象或函数来简单地“滚动自己的”模拟对象。

您必须弄清楚如何将模拟对象注入SUT。例如,如果您的SUT有成员变量对象实例,也许您可​​以创建SUT的子类并添加方法“SetMemberObj(aMockInstance)”来安装模拟对象。如果您的SUT使用全局函数,也许您可​​以创建具有相同签名的函数,而不是将您的测试应用程序与包含实际函数的.lib链接,以便您的SUT将调用伪造函数。

您还必须决定如何验证SUT的行为;在一个简单的例子中,您可以检查方法的返回代码,而在更复杂的情况下,您将需要查询模拟对象以查看它们是如何被SUT调用的。

您可能也有可能要弄清楚如何实际调用您的SUT。我通常做的是创建一个控制台.exe,它以各种方式实例化并驱动SUT,通过stdout和/或返回代码指示任何错误。单元测试框架对此非常有帮助,但并非完全必要。

答案 2 :(得分:1)

CppUnit是用于单元测试的JUnit的C ++等价物。

答案 3 :(得分:1)

有很多可用的C ++单元测试框架,因此选择一个可能相当艰巨。 Here是一系列非常好的博客文章,评估了几个框架,并包含大量C ++单元测试的实例。

答案 4 :(得分:0)

以下是用C ++演示测试驱动开发的教学视频:http://www.vimeo.com/album/254486