[JAVA] ATDD-Entwicklung unter iOS (Basic Edition)

Es ist eine Fortsetzung des Folgenden.

Systemarchitektur

Wie oben erwähnt, wird es nachgedruckt. _Cucumber Workflow (1).jpg

Projektstruktur

├─ src
   ├─ test
      ├─ java
      |  └─ jp.co.hoge.Project.E2ETest
      |     ├─ pageobject
      |     └─ steps
      |     └─ utils
      └─ resources
         └─ jp.co.hoge.Project.E2ETest
            └─ feature files

PageObject Ein PageObject ist ein Objekt, das die Beziehung zwischen einer Seite und einem Benutzer darstellt (unabhängig vom Test). Die folgenden Bedingungen sind erfüllt.

PageObject-Beispiel

PageObject bedeutet im Grunde etwas, das die oben genannten Anforderungen erfüllt, aber aus Entwicklungsgründen haben wir es nicht vollständig konform gemacht. Diesmal haben wir beispielsweise ein PageObject namens BasePage als Basisklasse von PageObject vorbereitet. Grundsätzlich wird diese Klasse beim Erstellen eines neuen PageObjects vererbt. Diese BasePage verfügt über eine öffentliche Methode zum Überprüfen der Existenz von Elementen. Obwohl die Methode im obigen Prinzip der Rückgabe von PageObjects widerspricht, habe ich mich aus Bequemlichkeitsgründen dazu entschlossen, die Existenzprüfung auf jedem PageObject zu implementieren.

///PageObject Beispiel
public class SearchPage extends BasePage {
    public SearchPage(IOSDriver driver) {
        super(driver);
    }

    @iOSXCUITFindBy(xpath = "//*[@name=\"Suche\"]")
    private IOSElement navigationBar;

    @iOSXCUITFindBy(xpath = "//*[@name=\"Finde einen Künstler\"]")
    private IOSElement textSearchField;

    @iOSXCUITFindBy(accessibility = "Rangfolge")
    private IOSElement ranking;

    ...

    public SearchResultPage searchText(String keyword) {
        textSearchField.setValue(keyword);
        driver.hideKeyboard();
        return new SearchResultPage(driver);
    }

    public SearchSuggestPage showSuggest(String keyword) {
        textSearchField.setValue(keyword);
        return new SearchSuggestPage(driver);
    }

    public Boolean existsNavigationBar() {
        return checkVisibilityOfElement(navigationBar);
    }

    ...

Feature Das Szenario ist im Klartext geschrieben. Hier kommt eine Syntaxregel namens Gherkin. Sample

Feature:Zeigen Sie die zu suchende Seite an

  Scenario:Drücken Sie die Suchregisterkarte
Starten Sie die angegebene App und wechseln Sie zum Suchbildschirm
Dann wird auf dem Suchbildschirm "Suchen" in der Kopfzeile angezeigt.

Steps Keyword Sie können die Schlüsselwörter ** Gegeben **, ** Wann **, ** Dann **, ** Und ** oder ** Aber ** für jeden Schritt verwenden. Diese werden jedoch bei der Suche nach Schrittdefinitionen nicht berücksichtigt.

Steps Argument Sie können Argumente an die Schrittdefinition übergeben. Es gibt jedoch Einschränkungen hinsichtlich der Typen, die verwendet werden können. https://cucumber.io/docs/cucumber/cucumber-expressions/#parameter-types

// example feature
Scenario:Zeigen Sie das Bedienfeld an, wenn Sie Musik abspielen
Tippen Sie auf die Registerkarte Gegebene Suche
Und von der Textsuche"Kenshi YONEZU"Eingeben
    ...
// example steps definision
@Given("Aus der Textsuche{string}Eingeben")
public void Anzeige von Genshi Yonezu aus der Textsuche(String keyword) {
    searchResultPage = searchPage.searchText(keyword);
}

Skip Test Wenn es eine Funktion gibt, mit der Sie den Test nicht auf CI ausführen möchten, z. B. einen Schritt mitten in der Entwicklung, können Sie die Ausführung des Tests überspringen, indem Sie die Anmerkung zum Ignorieren hinzufügen.

@ignore
Feature:Anzeigenanzeige

Recommended Posts

ATDD-Entwicklung unter iOS (Basic Edition)
iOS App Entwicklung: Timer App (2. Timer Anzeige)
ROS App Entwicklung auf Android
[IOS] canOpenURL wird in iOS14 falsch
iOS App Entwicklung: Timer App (Zusammenfassung)
Ruby on Rails Grundlegendes Memorandum
Grundkenntnisse in Ruby on Rails
Komplettes IOS-App-Entwicklungstagebuch zum Selbststudium
Roadmap für die Entwicklung von iOS-Apps (Einführung)
Verwenden des lokalen Netzwerks mit iOS 14
iOS App Entwicklung: Timer App (4. Implementierung des Countdowns)
iOS App Entwicklung: Timer App (1. Timer Zeiteinstellung)
Erstellen Sie eine Unity-Entwicklungsumgebung auf Docker
iOS App Entwicklung: Timer App (10. Animation erstellen)
Installieren Sie die Java-Entwicklungsumgebung auf dem Mac