可以将 C++ 单元测试集成到 Xcode 的 XCTest 中吗?

Posted

技术标签:

【中文标题】可以将 C++ 单元测试集成到 Xcode 的 XCTest 中吗?【英文标题】:could one integrate C++ unit testing into Xcode's XCTest? 【发布时间】:2015-03-17 23:20:11 【问题描述】:

我有自己的小型跨平台 C++ 单元测试框架,其中单元测试如下所示:

#include "Test.h"

DEFINE_TEST(myTest) 
    AssertEqual(2+2, 4);

并且在 .cpp 文件中。

(似乎类似于Catch 的做法,我敢肯定)

我想将它与 Xcode 集成,因此我可以使用 Xcode 的 Run Tests 命令运行我的测试,并利用 other tools 这取决于以这种方式运行的单元测试。理想情况下,我希望我的每个测试用例都是 XCTest 测试用例(尽管我可以为每个测试手动设置它),并且我希望我的断言(AssertEqual)表现得像 XCTest 的(XCTAssert)。

这可能吗?如果是这样,我该怎么做?

(注意:不要切换到只使用 XCtest,因为我希望我的测试也能在 Windows 上运行)

【问题讨论】:

您能找到一种跨平台的好方法吗? 【参考方案1】:

与 Xcode 集成基本上意味着确保:

这些测试中的每一个最终都作为测试用例类的测试方法。 每个失败的断言都会将-[XCTestCase recordFailure:withDescription:inFile:atLine:expected:] 发送到当前正在执行的测试用例类实例。

在第一次测试运行后,Xcode 将使用所有运行时发现的测试填充测试导航器,这些测试组织在测试用例类下。

您也许可以使用宏完成大部分工作,让预处理器在编译时构建您的测试用例类和方法。否则,在测试运行程序轮询运行时以发现所有 XCTestCase 子类及其测试方法之前,您需要在运行时检查并连接所有内容。

【讨论】:

以上是关于可以将 C++ 单元测试集成到 Xcode 的 XCTest 中吗?的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins怎么集成c++单元测试?

iOS 应用程序的 Xcode 单元测试中的链接问题与嵌入式 C++ 代码

将单元和 UI 测试添加到 Xcode 中的现有项目

将单元测试移动到 xcode 中的不同文件夹

如何在 Xcode 4.6 中使用 googletest 实现 c++ 单元测试?

将 OCUnit 测试框架添加到现有 Xcode 项目时遇到问题