В XCUITest с Xcode
Если вы с помощью UITestCase сейчас, вы не можете напрямую открывать D Контроллер
каждый должен делать последовательность (А-> B-> C-> D), потому что все теста особое_разрешение вызвать приложение запускает espectially зарегистрировались, SignOut должны быть необходимы для UITest каждый раз, когда
дополнительный способ использовать XCUI тест для TestCase
обеспечивают A, B, функция последовательности с в качестве протокола для минимизации дублированный кода
ех) определяют Логин протокол
protocol Loginable {
var app: XCUIApplication! { get }
func login()
}
extension Loginable {
func login() {
//do login ... typting textfield , tap login button
}
}
расширить A, B, C, D UITestCase с помощью Loginable удалить скопированный код (потому что каждый D uitest случай должен быть logined в примере)
расширение грим для функции последовательности повторно использовать каждый случай
альтернативным решением является
использование KIF Functional Test framework
КИФ может проверить UITest на основе XCTest вместо XCUITest
КИФ может получить доступ к классу, как модульное тестирование, что означает
вы можете показать свой D ViewController в окно (набор RootViewController непосредственно) и протестировать функцию КИФ UItest
ех) КИФ
import XCTest
@testable import YourApp
class DViewControllerTests: XCTestCase {
var sut: DViewController!
var window: UIWindow!
override func setUp() {
super.setUp()
let appDelegate = UIApplication.shared.delegate as! AppDelegate
window = appDelegate.window
sut = //Initialize your D ViewController
window.rootViewController = sut
RunLoop.current.run(until: Date()) // cause viewDidLoad
}
func testSomeCase() {
tester().tapView(withAccessibilityIdentifier: "someIdentifier")
...
}
}
КИФ может непосредственно запустить D настройки контроллера RootViewController к окну
спасибо Круз. Ваше решение выглядит очень полезным. Я его реализую. Большое спасибо. –
@GopeshGupta – Cruz