将Swift单元测试添加到混合语言Xcode项目中

时间:2015-09-23 20:16:19

标签: objective-c xcode swift unit-testing

如何设置单元测试来测试添加到以前只有Objective-c项目的Swift类?

我已经将Swift类添加到我的项目中,并且能够在其他Swift和Objective-c文件中使用它们;但是,我无法从我的测试类中访问它们。

我认为正确的导入语句是@testable import MyAppModuleName,这是添加到Xcode模板中的示例测试类的内容。该行产生的错误是Cannot import module being compiled。使用Swift 2在Xcode 7中出现此错误。

3 个答案:

答案 0 :(得分:5)

我在使用Objective-C和Swift代码库的工作区上工作时遇到了类似的问题,并希望为我的Swift文件编写单元测试用例。以下是我解决问题的步骤。

  • 我在项目的Build Settings
  • 中将'enable testability'设置为'YES'
  • 我还在项目的Build Settings中将'Defines Module'设置为'YES'。
  • 对于我项目中的常规.swift文件,比如 MyApp ,我是 要编写测试用例,我两者主要的“ MyApp ”和 “ MyAppUnitTests ”目标成员资格下检查了目标。

然后,我选择了我的单元测试文件,在“ import XCTest ”下面的顶部,“导入XCTest ”中声明了“ @testable import MyApp ”,并且选中目标成员资格下的“ MyAppUnitTests ”。 清洁,建造和运行,一切都像魅力。希望这会有所帮助。

答案 1 :(得分:3)

https://twitter.com/UINT_MIN提供的答案

在我的情况下,两个目标(应用程序和测试)在构建设置中具有相同的模块名称。更改测试目标的模块名称解决了问题。

答案 2 :(得分:1)

@testable import适用于您尝试从测试目标中导入主模块中的代码时。您的测试代码不应该是您的应用目标的成员 - 您应该有一个单独的测试目标。有关详细信息,请参阅Using Unit Tests