2016-04-23 113 views
0

我有一個用Obj-C編寫的iOS應用程序,它也有單元測試。現在,我添加了一個新功能,我在Obj-C類(O)中使用Swift類(S)。我爲主要目標和測試目標都設置了橋接頭。直到這一點,一切運作良好。Swift和Obj-c互操作性問題,同時單元測試

這裏的問題, 如果我想創建一個單元測試類(U)的類O快速運行它,我得到一個問題,說橋接頭找不到。我假設這是因爲O使用S和這些細節在橋接頭文件中,然後再次嘗試在U中使用S和O導致失敗。如果我添加任何不使用S的其他Obj-C類,它的工作原理完美無缺。

以下是我已經完成的工作,確保您知道發生了什麼, 因爲我知道哦文件將不支持持有-Swift.h導入語句,因此它是在Om文件中。

是否支持此方案?

Class O uses Class S. 
Class U can test class O by using class S. 

Note: O->Objective-C 
     S->Swift Class 
     U->Unit test class in swift. 
+0

'我爲兩個主目標設置了橋接頭和測試目標',在這個測試目標中你要在單元測試的橋接頭中導入主應用程序的橋接頭,對吧?如果有的話,也許再加上這個問題的細節? –

+0

IIRC,Apple建議您使用與其測試課程相同的語言編寫單元測試。在這種情況下,我可能會在Objective C中編寫單元測試,因爲他們正在測試的類是Objective-C。也就是說,它使用Swift類並不重要。 –

+0

但是,你真的在​​看什麼?或者你爲什麼懷疑它不被支持? –

回答

0

答案很簡單,但不是很明顯。我必須按照使用順序將導入語句放在橋接頭文件中。例如:如果一個類依賴於另一個類,那麼重要的是先放置依賴項的import語句,然後在橋接頭中放置調用類的文件。