[英]current webrtc ios static library - e.g. libwebrtc_arm64.a?
[英]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
選擇(雖然在這種情況下它並不重要)。
現在搜索Linking
和Other 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.