我查看了很多博客并尝试了许多方法让我的Swift单元测试在Xcode 6.0.1(或者6.1)中工作。我正在尝试访问应用程序目标中的类,所以我写了这一行:
var vc: LoginViewController!
当然,我得到了“使用未声明的类型'LoginViewController'”错误。
然后我尝试将LoginViewController
添加到我的测试目标,但随后我在项目中的其他类上“使用了未解析的标识符”错误。所以我尝试将这些类添加到我的测试目标中,但我最终得到了一个看似无穷无尽的错误来源,如下面的截图:
将我的所有课程声明为公开课程会导致其他错误,这似乎是不好的做法。无论如何,在依赖于许多框架和类的Swift项目中包含单元测试?我只是想从与article中的代码完全相同的东西开始。
答案 0 :(得分:36)
经过一番头痛并把它放在后面,我发现主要的问题是在将文件添加到测试目标成员资格时,Objective-C类仍然会抱怨。我认为这是一个旧的兼容性问题,Swift进行单元测试的新方式,但解决方案是我的测试目标不知道有一个桥接头。因此,我在测试目标的构建设置中添加了对它的引用,如下所示:
现在看似简单明了,但错误无益。我没有看到Swift单元测试的其他解决方案表明这可能是一个问题,但现在我知道了。
<强>铊组成; dr 强>
要在Swift中使用单元测试,测试目标必须知道应用目标所知的所有内容,因此也要在测试目标中添加对桥接头的引用(如果适用)。
答案 1 :(得分:14)
我正在使用Xcode 6.1
您需要将swift文件添加到测试目标的target membership
答案 2 :(得分:14)
如果您正在使用Xcode 7,现在使用@testable import {ModuleName}
处理此问题的方法要好得多。
只需确保您要测试的模块的构建设置Enable Testability
设置为YES
。