2015-07-10 52 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à。

相关问题