0

我正在尝试为现有的 c++ 项目设置一些单元测试。

设置如下:我选择了 Google Mock,其中包括 Google Test。我在 Visual Studio 解决方案中添加了另一个项目(称为测试)。要测试的单元位于另一个名为 Main 的项目中。计划是将我要测试的每个 cpp 文件添加到 Tests 项目中。Tests 项目可以访问 Main 中的所有头文件。

我在 Tests 项目中添加了一个 cpp 文件,它可以编译,但出现链接器错误。大多数是因为从 COleDateTime 派生的一个类,称为 CTimeValue。被测单元具有按值传递 CTimeValue 参数的方法,并且还声明了一些 CTimeValue 属性。

我想单独测试 UUT,并对所有依赖项使用模拟和伪造。我不知道如何使用 CTimeValue 来做到这一点。它用作值,不包含虚拟方法,但仍然相当复杂,值得单独进行单元测试。

CTimeValue 只是项目中许多这样的类之一。如何隔离使用这些用户定义类型的类的测试?

干杯,菲利克斯

4

3 回答 3

3

有时不能简单地嘲笑事物。在这种情况下,您可以做的是对相关类 (CTimeValue) 进行全面测试,并确保将该类的测试作为其他测试中的子套件运行。

于 2009-04-03T20:13:14.527 回答
0

使用模拟对象,您只需要添加您的 UUT 使用的方法签名,因此也许您可以使用 google mock 创建一个模拟。当然,您将需要一个单独的 CTimeValue 类测试套件,如果您有,那么最好链接到实际对象中。您需要决定是否值得努力创建一个接口类来创建模拟。

于 2009-04-04T17:27:19.193 回答
0

模拟最适合与为彼此提供服务的对象一起工作,模拟的期望描述了它们之间的关系。模拟值对象没有多大意义。

于 2009-09-13T10:52:08.873 回答