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

could one integrate C++ unit testing into Xcode's XCTest?

本文关键字:Xcode XCTest 中吗 集成 C++ 单元测试      更新时间:2023-10-16

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

#include "Test.h"
DEFINE_TEST(myTest) {
    AssertEqual(2+2, 4);
}

并且位于.cpp文件中。

(似乎类似于 Catch 的做法,其中包括我敢肯定的其他方式)

我想将其与 Xcode 集成,这样我就可以使用 Xcode 的"运行测试"命令运行我的测试,并利用其他依赖于以这种方式运行的单元测试的工具。理想情况下,我希望我的每个测试用例都是XCTest测试用例(尽管我可以为每个测试手动设置它),并且我希望我的断言(AssertEqual)的行为类似于XCTest(XCTAssert)。

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

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

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

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

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

您可能能够使用宏完成大部分工作,让预处理器在编译时构建测试用例类和方法。否则,您需要在运行时遍历并挂接所有内容,然后测试运行程序轮询运行时以发现所有XCTestCase子类及其测试方法。