2015-04-16 11 views
10

Napisałem poniższy przypadek testowy, który sprawował się dobrze w szybkim 1.1. Ale w 1.2 jego rozbicie.Jednostka testowa Sterowanie rzutem swift-rzutnik z storyboardu nie działa

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

Błąd podczas uruchamiania testów jednostkowych

Nie można rzucić wartość typu 'testProject.AboutViewController' (0x105b0ad30) do 'testProjectTests.AboutViewController' (0x116e51d20).

Zrobiłem wystarczająco dużo badań, aby rozwiązać ten problem. Ale nie był w stanie tego zrobić. Mam nadzieję, że niektórzy z was natkną się na ten problem i będą mogli mi w tym pomóc.

Odpowiedz

12

miałem ten sam problem i rozwiązanie:

  • Dodaj storyboard Main i AboutViewController w celu testowym
  • Wymień UIStoryboard(name: "Main", bundle:NSBundle.mainBundle()) z UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.classForCoder))

ten sposób będziesz załadować storyboard i zainicjować kontroler z pakietu docelowego, zamiast używać go z głównego pakietu docelowego. Check this link for details

10

Napotkałem ten sam problem kilka minut temu. Oto, jak to rozwiązałem.

  1. dodawania storyboard do celu testowania
  2. Załaduj sterownik widok ten sposób:
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle:NSBundle(forClass: self.dynamicType)) 

self.vc = storyboard.instantiateViewControllerWithIdentifier("gettingStartedView") as! MainViewController 

self.vc.loadView() 

nadzieję, że to pomaga!

+0

Ta zmiana naprawiła to także dla mnie – Rogare

Powiązane problemy