簡體   English   中英

使用pod時,isKindOfClass與目標不匹配

[英]isKindOfClass doesn't match across targets when using a pod

我遇到了涉及isKindOfClass檢查的單元測試代碼問題。 關於這個主題存在很多問題,答案建議:

  • 確保-ObjC包含在“其他鏈接器標志”中。 它是。
  • 確保項目目標中的.m文件未添加到測試目標。 他們不是。
  • ...?

為了確保沒有奇怪的情況,我創建了一個新項目。 一世:

  • 創建了一個“空應用程序”項目
  • 添加了引用"TwistedOakCollapsingFutures"
  • Ran pod install
  • 打開工作區
  • 已驗證-ObjC存在於兩個目標中
  • 添加了一個將[TOCFuture futureWithResult:@1]AppDelegate.m
  • 添加了XCTAssert([AppDelegate.makeFuture isKindOfClass:TOCFuture.class], @"")到示例測試
  • 跑單元測試(斷言失敗)

基本上我不知道為什么這不起作用。 更奇怪的是,如果我反對現有的答案並在測試目標中包含AppDelegate.m ,測試就會開始通過。

到底是怎么回事? 我想將源文件包含在測試目標中,還是我不應該?

這個答案為我解決了它https://stackoverflow.com/a/27165120/2777364

簡而言之,您不應將pod與測試目標鏈接,並且應該為至少一個其他pod創建單獨的鏈接以供測試目標強制生成配置集。

target 'MainTarget' do
    pod 'PodYouTryToTest'
end

target 'Tests' do
    pod 'AtLeastOneOtherPod'
end

上面的答案是解決這個問題的“正確方法”。 作為一個快速的解決方法,我可以提出一個方法:

Class getBundleDependentClass(Class class) { 
     return NSClassFromString(NSStringFromClass(class)); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM