我创建了一个子类UICollectionViewController并调用它LibraryCollectionViewController,并标记了项目和测试的两个复选框.它的故事板id也是LibraryCollectionViewController在界面构建器上设置其对应的类.
作为Swift和iOS测试的新手,我去尝试在我的测试用例中实例化所述视图控制器,如下所示:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let libraryCollectionVC = storyboard.instantiateViewControllerWithIdentifier("LibraryCollectionViewController") as! LibraryCollectionViewController
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
Could not cast value of type 'MyApp.LibraryCollectionViewController' (0x1010b01f0) to 'MyAppTests.LibraryCollectionViewController' (0x10bd7f580).
Run Code Online (Sandbox Code Playgroud)
所以很明显它不是强制转换,但由于我还是Swift的新手,我发现自己无法确定错误本身是否由以下原因引起:
as!不正确如果提前感谢,任何帮助都会很感激.
更新1:当我创建视图控制器时,最后一步显示目标标题下的2个复选框,我启用了它们,这可能是原因吗?
Bri*_*yIE 10
我的问题是我NSBundle.mainBundle()从单元测试中引用,而我需要使用:
let bundle = NSBundle(forClass: self.classForCoder)
Run Code Online (Sandbox Code Playgroud)
如果一个类是两个目标(可能是两个框架?)的成员,并且您的应用以某种方式引用一个框架,而单元测试目标则引用了第二个目标,则可能会发生这种情况。
因此,其中一个已编译的工件具有完全限定的类型,Framework1.MyClass而另一个则是Framework2.MyClass-且它们在运行时是不同的类,因为它们具有不同的名称空间。(即使两个类都是从同一个Swift源文件编译的)
| 归档时间: |
|
| 查看次数: |
11296 次 |
| 最近记录: |