我写了下面的测试案例,它在1.1版本中工作正常.但在1.2它的破裂.
class AboutViewController_Tests: XCTestCase { //var storyboard: UIStoryboard = UIStoryboard(name: "Main",bundle: NSBundle(forClass: self.dynamicType)) // Used in swift 1.1 var storyboard: UIStoryboard = UIStoryboard(name: "Main",bundle:NSBundle.mainBundle()) // Replaced this in swift 1.2 var aboutViewController:AboutViewController! override func setUp() { super.setUp() aboutViewController = storyboard.instantiateViewControllerWithIdentifier("AboutViewController") as! AboutViewController aboutViewController.viewDidLoad() XCTAssertNotNil(aboutViewController,"About not nil") } }
运行单元测试时出错
无法将“testProject.AboutViewController”(0x105b0ad30)类型的值转换为“testProjectTests.AboutViewController”(0x116e51d20).
我已经做了足够的研究来解决这个问题.但是无法做到这一点.我希望你们中的一些遇到这个问题,并能帮助我.
解决方法
我有同样的问题,解决办法是:
>添加故事板Main和AboutViewController在测试目标
>替换UIStoryboard(名称:“Main”,bundle:NSBundle.mainBundle())
UIStoryboard(名称:“Main”,bundle:NSBundle(forClass:self.classForCoder))
这样你就可以加载故事板并从测试目标包中初始化控制器,而不是从主目标包中使用它.
Check this link for details