Einfaches Problem. Ich habe Knopf, der Übergang zum nächsten Ansichtsteuerpult durchführt. Ich möchte UI XCTest schreiben, um mir zu sagen, hat es Open View Controller ich wollte.UITesting, XCTest aktuelle ViewController Klasse
Antwort
Das UI-Testframework hat keinen Zugriff auf Ihren Anwendungscode, wodurch Klassenzusicherungen für Instanzen unmöglich gemacht werden. Sie können nicht direkt sagen die Klasse des Controllers, der auf dem Bildschirm ist.
Wenn Sie jedoch etwas anders über Ihren Test nachdenken, können Sie eine sehr ähnliche Aussage machen. Schreiben Sie Ihre Tests, als ob Sie der Benutzer sind. Ihrem Benutzer ist es egal, ob er/sie einen ItemDetailViewController
oder einen ItemListTableViewController
schaut, also sollten Ihre Tests auch nicht.
Der Benutzer kümmert sich, was auf dem Bildschirm angezeigt wird. Wie lautet der Titel? Oder, wie heißen diese Knöpfe? Wenn Sie dieser Logik folgen, schreiben Sie Ihren Test neu, um basierend auf diesen Elementen zu bestätigen, nicht den Namen der codierten Klasse.
Wenn Sie beispielsweise Ihren Controller in einem Navigationsstapel präsentieren, können Sie den Titel bestätigen.
Oder, wenn der Bildschirm modal präsentiert wird, aber Sie einige statische Text oder Schaltflächen kennen, verwenden Sie diese.
let app = XCUIApplication()
app.buttons["View Item"].tap()
XCTAssert(app.staticTexts["Item Detail"].exists)
XCTAssert(app.buttons["Remove Item"].exists)
- 1. Klasse Viewcontroller hat keine intitalizers
- 2. iOS UITesting Fehler
- 3. Android: Laufzeitfehler während UiTesting
- 4. xctest - Präprozessormakro
- 5. Ruby aktuelle Klasse
- 6. Erhalten aktuelle Klasse
- 7. Testen von RACSignalen mit XCTest
- 8. 'NSInternalInconsistencyException' beim Ausführen von UITesting mit Xcode 7
- 9. Klasse ‚Viewcontroller‘ hat keinen initializers in schnellen
- 10. Hide XCTest Console Nachrichten
- 11. Asynchrone Leistungstests mit XCTest
- 12. XCTest unter anderem Gebietsschema
- 13. launchArguments in UITesting in Xcode 7.3 funktioniert nicht
- 14. UITesting Citrix-Anwendung mit Visual Studio 2015
- 15. Coded UI-Tests - nicht lösen Symbol UITesting
- 16. UITesting: Zwei Elemente mit derselben AccessibilityTitle
- 17. UITesting von Alarmen in xCode 7.1
- 18. Xcode 6, XCTest, "Erwarteter Ausdruck"
- 19. So importieren Sie XCTest Suite
- 20. Async Method Testing mit XCTest
- 21. XCTest verknüpft keine iOS-Frameworks
- 22. XCTest erwarten Methodenaufruf mit schnellen
- 23. Automatisierter Push-Benachrichtigungstest mit XCTest
- 24. XCTest Ausgabe in eine Datei
- 25. Wie bekomme ich die aktuelle Datei, aktuelle Klasse und aktuelle Methode mit Python?
- 26. Get LogLevel für aktuelle Klasse/bean
- 27. Android der aktuelle Fragment Klasse Activity Class
- 28. Ruby - Scoping-Methode ruft aktuelle Klasse auf
- 29. putting aktuelle Klasse als Rückgabetyp Annotation
- 30. Wie mehrere Viewcontroller statt anfänglichen Viewcontroller
Danke, das hilft sehr. Ich habe es genau gemacht, dachte aber, dass mir etwas fehlt. –
In meinem Fall muss ich 'sleep (1)' vor 'app.buttons [" View Item "]. Tap()' damit es funktioniert – onmyway133
Ich fühle, dass es einen besseren Weg geben muss, dies zu tun ... Was passiert, wenn Sie den Text in der App ändern? Was passiert, wenn Sie mehrere Lokalisierungen des Textes in der App haben? Es scheint, dass es ziemlich viele Tests erfordern würde, wenn es lokalisiert ist und ein potenzieller Maintenance-Kopfschmerz, wenn der Text sich ändern muss. –