簡體   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