gpt4 book ai didi

c++ - 如何使用 C++ 在 Xcode 上成功执行 TDD?

转载 作者:太空狗 更新时间:2023-10-29 23:19:07 26 4
gpt4 key购买 nike

目前我正在 iOS 上使用 C++ 开发 OpenGL ES 1.0 相关项目。

我只是找不到一种方法可以顺利地集成任何单元测试框架来在此特定设置上进行 TDD。

工作环境:

  1. 操作系统:OS/X 10.7
  2. 目标设备:iOS
  3. 主要语言:C++
  4. 集成开发环境:Xcode
  5. OpenGL ES 1.0

我试过 googletest,但为了使 googletest 工作,我应该能够创建命令行应用程序,但由于我使用的是 OpenGL ES 1.0,我无法真正将它们导入 Mac 上的命令行应用程序。

我尝试了名为 catch 的新方法,但我不知道如何与 Xcode 集成。

谁有解决这个问题的好方法?

最佳答案

这就是我进行 TDD 编程的方式。首先,我建立了我需要添加的新功能,然后我建立了该功能将具有的所有外部依赖项。例如,我当前的项目依赖于一个 c api,它提供有关我正在使用的模型的信息。我还依赖于命令行,因为客户端可以输入我必须响应的命令。这个命令行是通过一个特殊的终端,我对它的细节不感兴趣。

因此,我为这些外部依赖项创建接口(interface)类,然后在我的代码中只使用这些接口(interface)。因此,我在进行测试时不需要模型的 C++ 库或终端的 C++ 库(稍后会详细介绍)。下面是一个用于写入命令行的接口(interface)示例:

class ICommandLineOutput
{
public:
virtual void WriteLine(std::string&) = 0;
};

假设我被要求编写一个将时间写入命令行的类,称为 WriteTime。然后,我要做的是将类型为 ICommandLineOutput 的对象传递给此类构造函数,并仅使用此接口(interface)。我不关心我正在使用哪种命令行,只关心它的界面。然后,我可以使用任何我想要的命令行类,只要它以 ICommandLineOutput 类为基础即可。

class WriteTime
{
public:
explicit WriteTime(ICommandLineOutput commandLine): _commandLine(commandLine){}
...
};

因此,在进行单元测试时,我将有一个单独的 C++ 项目,我将在其中测试我编写的每个类。这个项目可以使用谷歌测试,它可以是一个命令行项目。因此,即使您正在编写包含在 GUI C++ 项目中的 GUI 应用程序,测试也有自己的项目。

假设我想测试将时间写入命令行的类。我将在名为 TestWriteTime 的类中执行此操作。我将使用 GoogleMock 创建 ICommandLineOutput 接口(interface)的模拟。然后可以通过测试基地在测试中质疑和/或配置模拟,以确定 WriteTime 是否按预期运行。例如,我可以检查调用 WriteLine() 的次数以及它接收的参数。

最后,在我当前的项目中,我正在处理一个具有大量依赖项的基于 Linux 的项目。该应用程序也需要很长时间才能启动。但是,我有一个 Windows 控制台项目,我在其中进行测试。此应用程序的执行时间不到一秒,非常适合 TDD。

关于c++ - 如何使用 C++ 在 Xcode 上成功执行 TDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com