如何使用 C++ 在 Xcode 上成功执行 TDD
How can I successfully do TDD on Xcode with C++ ?
目前,我正在使用iOS上的C++进行OpenGL ES 1.0相关项目。
我只是找不到一种方法来顺利集成任何单元测试框架来在此特定设置上进行TDD。
工作环境:
- 操作系统 : 操作系统/X 10.7
- 目标设备 : 苹果
- 主要语言 : C++
- IDE:Xcode
- OpenGL ES 1.0
但为了使googletest工作,我应该能够创建命令行应用程序,但由于我使用的是 OpenGL ES 1.0,因此我无法真正将它们导入到 Mac 上的命令行应用程序中。
我尝试了名为catch的新方法,但我不知道如何与Xcode集成。
有人对这个问题有很好的解决方案吗?
这就是我做TDD编程的方式。首先,我建立需要添加的新功能,然后建立此功能将具有的所有外部依赖项。例如,我在当前项目中有一个对 c api 的依赖关系,该 api 提供有关我正在使用的模型的信息。我也依赖于命令行,因为客户端可以输入我必须响应的命令。这个命令行是通过一个特殊的终端,我对它的细节不感兴趣。
因此,我为这些外部依赖项创建接口类,然后在代码中仅使用这些接口。因此,在进行测试时,我不需要模型的 c++ 库或终端的 c++ 库(稍后会详细介绍(。下面是用于写入命令行的界面示例:
class ICommandLineOutput
{
public:
virtual void WriteLine(std::string&) = 0;
};
因此,假设我被要求编写一个将时间写入命令行的类,称为 WriteTime。然后,我要做的是将 ICommandLineOutput 类型的对象传递给此类构造函数,并仅使用此接口。我不关心我正在使用哪种命令行,只关心它的界面。然后,我可以使用我想要的任何命令行类,只要它以 ICommandLineOutput 类为基础。
class WriteTime
{
public:
explicit WriteTime(ICommandLineOutput commandLine): _commandLine(commandLine){}
...
};
因此,在单元测试时,我将有一个单独的C++项目,我将在其中测试我编写的每个类。这个项目可以使用谷歌测试,它可以是一个命令行项目。因此,即使您正在编写包含在 GUI C++项目中的 GUI 应用程序,测试也有自己的项目。
假设我想测试我的类,它将时间写入命令行。我将在一个名为TestWriteTime的类中执行此操作。我将使用 GoogleMock 创建 ICommandLineOutput 接口的模拟。然后,测试基础可以在测试中质疑和/或配置模拟,以确定 WriteTime 是否按预期运行。例如,我可以检查调用 WriteLine(( 的次数以及它接收的参数。
最后,在我目前的项目中,我正在使用一个基于 Linux 的项目,该项目具有大量的依赖项。该应用程序也需要很长时间才能启动。但是,我有一个 Windows 控制台项目,我在其中进行测试。此应用程序在不到一秒钟的时间内执行,非常适合TDD。
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- C++,系统无法执行指定的程序
- 使用C++中的模板和运算符重载执行矩阵运算
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- cmake在我的项目中所需的所有静态库都不成功
- 执行函数时导致崩溃的变量
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 如何在Mac OSX上的Qt中使用pkcs12 / pfx成功执行SSL加密?
- dll 生成成功,但在加载 dll 时执行错误
- ShellExecute 返回成功,但不执行文件
- G++ 和 CL(VS2017) 都编译成功,但 cl 编译的可执行文件运行异常
- 成功执行,但在代码厨师上上传时超出时间限制
- 线程在成功pthread_create之后不执行任何操作
- Windows安装程序,成功执行后自定义操作出现错误2896
- C++ sqlite3 如何知道 SQL 语句是否成功执行
- 如何使用 C++ 在 Xcode 上成功执行 TDD
- 如何使用system()在c中执行2个成功的系统命令,例如连接到ftp并使用程序登录
- 成功执行 boost::文件系统::last_write_time 需要哪些权限
- Winsock TCP侦听器在成功执行closesocket()调用后保持LISTENING状态
- 没有返回语句,函数执行成功