2015-07-10 49 views
14

我已經在我的項目名爲Meal.swift類和單元測試Xcode的測試無法檢測到我的課

func testMealInitialization() { 
    // Success case. 
    let potentialItem = Meal(name: "Newest meal", photo: nil, rating: 5) 
    XCTAssertNotNil(potentialItem) 

    // Failure cases. 
    let noName = Meal(name: "", photo: nil, rating: 0) 
    XCTAssertNil(noName, "Empty name is invalid") 

} 

但問題是:使用未解決的標識符「膳食」

+0

確定你沒有錯過'''@ testable'''如果餐食不公開 –

+0

@ChristianDietrich我的餐食類是公開的 –

+0

如何使用@testable? –

回答

14

@testable import MyApp應該可以正常工作。請記住在Debug內爲您的UITest目標設置適當的配置。

enter image description here

+0

即使將配置更改爲.debug,如圖所示,我也會得到「無此模塊」。 –

+0

我必須這樣做:https://stackoverflow.com/questions/32008403/no-such-module-when-using-testable-in-xcode-unit-tests/44687800#44687800 –

12

的Xcode 7添加了@testable import語句以簡化用戶測試。在單元測試類文件的頂部,添加以下語句:

@testable import MyApp 

MyApp的是你的iOS應用程序的名稱。現在單元測試目標應該能夠在您的應用程序中找到類並運行測試。如果您發現鏈接錯誤,指出Xcode找不到您的應用類,請確保產品模塊名稱版本設置的值與您在@testable import聲明中使用的名稱MyApp在此示例中匹配。

如果@testable import不適用於您,解決方法是讓您的應用程序類成爲單元測試目標的成員。您可以使用文件檢查器在Xcode中設置文件的目標成員資格。

+1

「@testable import」不起作用爲我的UITest類。爲什麼?必須有辦法做到這一點,而無需手動將每個文件添加到UITest目標。 –

+0

這很糟糕 - 我還沒有能夠在我們的大型項目上做出可測試的工作。通常,在編譯期間,問題是「沒有這樣的模塊」錯誤,並且在無數小時的擺弄之後,我決定它不能可靠地工作,並且絕對不在UI測試類上。 - 如果您的項目中有多個軟件包(或「模塊」),我相當確定它存在問題。例如,我們將所有的東西都組織到不同的包中,例如Utility,Model,View等。我們無法讓測試類成功導入這些模塊。 – Zac

+2

**產品模塊名稱建立設置**使我的一天 - 謝謝你! – user1244109

4

我也遇到過這個問題,什麼工作對我來說是重裝我的測試文件,並重新輸入

@testable import FoodTracker 

那麼在這一點上,它檢測到我的FoodTracker類(餐飲類)和錯誤消失了。

1

點擊你的餐食類。然後在右側看到'Target Membership'部分。選擇你的測試項目。 (Xcode 7) Voilà。

相關問題