2015-09-23 58 views
4

如何設置單元測試來測試Swift類添加到以前僅用於Objective-C的項目?將Swift單元測試添加到混合語言Xcode項目

我已經將Swift類添加到了我的項目中,並且能夠在其他Swift和Objective-c文件中使用它們;但是,我無法從我的測試課程中訪問它們。

我認爲是正確的import語句是@testable import MyAppModuleName這是在Xcode的模板中添加到示例測試類中的內容。該行產生的錯誤是Cannot import module being compiled。這個錯誤發生在使用Swift 2的Xcode 7中。

回答

3

回答兩個目標(應用程序和測試)在構建設置了相同的模塊名稱。更改測試目標的模塊名稱解決了問題。

1

@testable import適用於當您嘗試從您的測試目標中從主模塊導入代碼時。您的測試代碼不應該是您的應用目標的成員 - 您應該擁有一個單獨的測試目標。詳情請參閱Using Unit Tests。通過https://twitter.com/UINT_MIN

提供在我的情況

+0

謝謝!我認爲這種情況會產生同樣的問題,儘管我沒有對它進行測試。在我的情況下,這個問題是模塊名稱衝突。 –

5

我有一個類似的問題工作在一個混合了Objective-C和Swift代碼庫的工作區上,並且想爲我的Swift文件編寫單元測試用例。以下是我爲解決問題所採取的步驟。

  • 我在項目的構建設置設置「啓用可測性」爲「YES」
  • 我還設置「定義模塊」爲「YES」在我的項目的構建設置。
  • 我的項目中的常規.swift文件(S),說MyApp的,我 打算寫測試用例,我有兩個主「MyApp的」和 「MyAppUnitTests 「目標成員下檢查的目標。

然後我選擇我的單元測試文件(S),宣佈在頂部的 '@testable進口MyApp的',下方的 '進口XCTest',並只有檢查「MyAppUnitTests 「目標成員資格下。 清理,建造和運行,一切都像魅力一樣。希望這可以幫助。

+0

*請注意,此處用作示例項目名稱的'MyApp'等於構建設置下的我的'產品模塊名稱'。只是爲了澄清。 –

相關問題