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

时间:2019-04-12 02:37:15

标签: xcode xctest xcode10.1 xctestcase

我正在尝试修复单元测试。 iOS应用程序很复杂,有许多静态链接到应用程序二进制文件中的开源库,包括Google protobuf和Boost。它们是作为静态链接库构建在我们的iOS应用项目的单独目标中,并链接到主应用。

到目前为止,即使该应用托管测试,这些库也已直接链接到测试目标。但是我在Google Protobuf初始化的早期就遇到了一个问题,这让我认为该库在测试目标和主应用程序目标中的存在都是一个问题。因此,我从测试目标中删除了静态库,以为引用该库中内容的Objective-C ++方法仍然可以在主应用程序可执行文件中找到它。似乎情况并非如此,因为链接器无法链接引用链接到应用程序二进制文件的静态库中定义的C ++代码的测试文件。

Objective-C和Swift代码似乎可以正确链接。

我不确定该如何解决。据我了解Xcode单元测试,通常不会在测试目标中包含主应用程序的代码。但是我不确定如何告诉Xcode我的测试文件需要能够针对应用程序中的任意代码进行链接。

这一切都在Xcode 10.1中。

1 个答案:

答案 0 :(得分:0)

必须在生产代码和测试代码中链接到相同的库,这并不罕见。想象一下在生产中使用的带有Foo对象的库。一些测试将要使Foo。但是他们不能只是从应用程序中抢购它。测试也需要链接到库。