好的。我用c ++完成了屏幕抓取程序。现在我如何对.cpp进行单元测试? 我从哪里开始?
答案 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