У меня есть подкласс XCTestCase
, который выглядит примерно так. Для краткости я удалил методы setup()
и tearDown
:
class ViewControllerTests <T : UIViewController>: XCTestCase {
var viewController : T!
final func loadControllerWithNibName(string:String) {
viewController = T(nibName: string, bundle: NSBundle(forClass: ViewControllerTests.self))
if #available(iOS 9.0, *) {
viewController.loadViewIfNeeded()
} else {
viewController.view.alpha = 1
}
}
}
И его подкласс, который выглядит примерно так:
class WelcomeViewControllerTests : ViewControllerTests<WelcomeViewController> {
override func setUp() {
super.setUp()
self.loadControllerWithNibName("welcomeViewController")
// Put setup code here. This method is called before the invocation of each test method in the class.
}
func testName() {
let value = self.viewController.firstNameTextField.text
if value == "" {
XCTFail()
}
}
}
Теоретически это должно работать как ожидалось - компилятор ни о чем не жалуется. Но это просто, когда я запускаю тестовые примеры, метод setup()
даже не вызван. Но в нем говорится, что тесты прошли, когда метод testName()
должен завершиться неудачно.
Является ли использование дженериков проблемой? Я легко могу думать о многих не общих подходах, но я бы очень хотел написать свои тестовые примеры. Является ли совместимость XCTest между Objective-C и Swift проблемой здесь?