【问题标题】:Xcode Test not detect my classXcode 测试没有检测到我的班级
【发布时间】:2015-09-28 21:23:06
【问题描述】:

我的项目中有一个名为 Meal.swift 的类和一个单元测试

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")

}

但问题是:使用未解决的标识符“Meal”

【问题讨论】:

  • 如果 Meal 不公开,请确保您没有错过 @testable
  • @ChristianDietrich 我的膳食课是公开的
  • 如何使用@testable?
  • 那么它应该可以在没有@testable(添加到导入中)的情况下工作
  • xcode 有点不稳定,它可能有助于点击产品/测试按钮

标签: ios iphone xcode swift xcode7


【解决方案1】:

Xcode 7 添加了@testable import 语句来简化单元测试。在单元测试类文件的顶部,添加以下语句:

@testable import MyApp

MyApp 是您的 iOS 应用程序的名称。现在单元测试目标应该能够在您的应用程序中找到类并运行测试。如果您收到提示 Xcode 找不到您的应用程序类的链接错误,请确保 Product Module Name 构建设置的值与您在 @testable import 语句中使用的名称相匹配,在此示例中为 MyApp

如果@testable import 不适合您,解决方法是让您的应用程序类成为单元测试目标的成员。您可以使用文件检查器在 Xcode 中设置文件的目标成员资格。

【讨论】:

  • @testable import 不适用于我的 UITest 课程。为什么?必须有一种方法可以做到这一点,而无需手动将每个文件都添加到 UITest 目标中。
  • 出了点问题——我还不能让@testable 在我们的大型项目上工作。通常,问题是在编译期间出现“没有这样的模块”错误,经过无数小时的摆弄,我决定它只是不能可靠地工作,而且绝对不能在 UI 测试类上工作。 – 如果您的项目中有多个包(或“模块”),我很确定它会出现问题。例如,我们将所有内容组织到不同的包中,例如 Utility、Model、View 等。我们无法让测试类成功导入这些模块。
  • 产品模块名称构建设置让我很开心 - 谢谢!
  • 在具有多个 pod 和 Carthage 框架的工作区项目中,解决方法(手动添加类到测试项目)是唯一对我有用的方法。
  • 遇到了同样的问题,解决方法是在项目设置中设置“定义模块”。之后我必须确保两个目标都使用相同的部署目标。感谢stackoverflow.com/a/62456877/198996stackoverflow.com/a/45480473/198996
【解决方案2】:

@testable import MyApp 应该可以正常工作。请记住在Debug 中为您的UITest 目标设置适当的配置。

【讨论】:

【解决方案3】:

我也遇到了这个问题,对我有用的是重新加载我的测试文件并重新输入

@testable import FoodTracker

然后,它检测到我的 FoodTracker 类(Meal 类)并且错误消失了。

【讨论】:

  • 我不得不重置 xcode,当它重新加载时,错误仍然存​​在一秒钟,同时重建项目
【解决方案4】:

点击您的膳食课程。然后在右侧,您会看到“目标会员”部分。选择您的测试项目。 (Xcode 7) 瞧。

【讨论】:

    【解决方案5】:

    就我而言,我只在刚刚创建的新课程中出现错误,这让我感到困惑。因此,它可以通过在我的新班级的 class members 下选择 Unit Test 目标来工作。或者删除类,重新创建新类,然后在新类中选择Unit Test Target

    【讨论】:

      猜你喜欢
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-26
      • 1970-01-01
      • 2022-10-15
      相关资源
      最近更新 更多