繁体   English   中英

如何在XCTest上使用静态库(例如cocoapods库)?

[英]How to use a static library (e.g. cocoapods library) on a XCTest?

我正在使用Core Data,因为我的模型变得更复杂,我需要确保我引入的新更改不会在其他部分意外地破坏我的模型。

我可以创建单元测试并在每次更改模型上的内容时运行它们。 如果出现问题,我的模型可能有问题,或者至少我知道我必须在主代码/测试中修改一些查询。

我正在使用MagicalRecord来访问一些方便的方法。 我也使用cocoapods出于同样的原因,方便。 问题是cocoapods创建了一个静态库并将其链接到我的目标,但在Xcode中,新的测试目标不会自动配置为链接到相关目标链接的相同库/框架。

如何针对静态库创建XCTest链接?

这不仅有助于MagicalRecord / Core Data,但是当您使用外部库时,最好进行测试以确保库上的更新不会破坏您的应用程序。

如果你正在使用cocoapods,你可以简单地使用link_with来包含你的测试目标,但是如果你使用的是非 cocoapods创建的静态库,你可以执行以下操作:

(我仍然会使用cocoapods库来获取指令,因为我正在使用它,但如果您不使用cocoapods库,那么这个想法是一样的)

创建新的测试目标后,单击项目导航器中的项目根节点,然后选择测试目标。 转到“ Build Settings并搜索“ Header Search Paths 双击Header Search Paths项并输入${SRCROOT}/Pods/Headers并选择recursive如果要导入所有cocoapods库标题或单独输入: ${SRCROOT}/Pods/Headers/MagicalRecord离开non-recursive选择(虽然在这种情况下它并不重要)。

现在搜索LinkingOther Linker Flags添加-ObjC

现在仍然选择了测试目标,转到Build Phases并在Link Binary With Libraries单击+并单独添加libPods.a或其他库( libPods-MagicalRecord.a

您应该能够使用静态库运行XCTest。

可选:我想导入我知道我将在-Prefix.pch文件中使用的标头。 您可以在Project Navigator中转到目标测试组。 转到Supporting Files组并打开-Prefix.pch文件。 对于MagicalRecord,我想添加:

#define MR_SHORTHAND
#import "CoreData+MagicalRecord.h"

欲获得更多信息:

经过大量的战斗,这些步骤对我有用:

1)项目>信息

在配置上,将测试目标设置为与主项目共享相同的配置文件(由Cocoapods生成)。

在此输入图像描述

现在,您应该开始出现一些错误,因为缺少XCUnit框架,但现在您的CocoaPod导入的外部库在您的测试项目中可见。

2)在测试目标>构建设置上查找标题搜索路径,一旦添加:

$(DEVELOPER_DIR)/Platforms/iPhoneOS.platform/Developer/Library/Frameworks
$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks

单元测试框架位于您的Xcode应用程序中,此标题将使它们公开以便稍后添加。

3)在Test Target> Build Phases上添加SenTestingKit.framework

在此输入图像描述

它看起来应该是这样的

在此输入图像描述

从那里,一切似乎对我有用。 祝好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM