Middle+
Aký vzor, tvoj názor, je najdôležitejší na použitie pri automatizácii testovania, okrem vzoru Page Object?
sobes.tech AI
Odpoveď od AI
Vzor Builder.
Umožňuje vytvárať zložité testovacie dáta alebo objekty krok za krokom, oddelením procesu konštrukcie od jeho prezentácie.
Výhody:
- Flexibilita: Uľahčuje vytváranie rôznych kombinácií testovacích dát.
- Čitateľnosť: Kód na vytváranie objektov je prehľadnejší.
- Podpora: Jednoduchšie je meniť proces vytvárania objektov bez ovplyvnenia klienta.
- Viacnásobné_opakovanie: Umožňuje vytvárať sady testovacích dát pre rôzne scenáre.
Príklad použitia na vytvorenie testovacieho používateľa:
public class User {
private String username;
private String password;
private String email;
private boolean isActive;
private User(Builder builder) {
this.username = builder.username;
this.password = builder.password;
this.email = builder.email;
this.isActive = builder.isActive;
}
public static class Builder {
private String username;
private String password;
private String email;
private boolean isActive = true; // Predvolená hodnota
public Builder(String username, String password) {
this.username = username;
this.password = password;
}
public Builder withEmail(String email) {
this.email = email;
return this;
}
public Builder withStatus(boolean isActive) {
this.isActive = isActive;
return this;
}
public User build() {
return new User(this);
}
}
// Gettery
public String getUsername() { return username; }
public String getPassword() { return password; }
public String getEmail() { return email; }
public boolean isActive() { return isActive; }
}
// Použitie v teste
public class UserCreationTest {
public void testUserCreation() {
User activeUser = new User.Builder("test_user", "password123")
.withEmail("test@example.com")
.build();
User inactiveUser = new User.Builder("inactive_user", "pass456")
.withStatus(false)
.build();
// Použitie objektov user v testovacích krokoch
}
}
V automatizácii testovania sa Builder často používa v kombinácii s Page Object na vytváranie testovacích dát potrebných na interakciu s prvkami stránky.