Automação de teste com tipos enumerados em Java

Convidamos futuros alunos do curso "Java QA Automation Engineer" a participarem da aula aberta sobre o tema "HTTP. Postman, newman, fiddler (charles), curl, SOAP. SOAPUI".







E agora sugerimos que você se familiarize com a tradução de materiais úteis.










O armazenamento de dados de teste geralmente requer um tipo de dados que:





  • permite que várias propriedades sejam declaradas;





  • tem comportamento mínimo ou nenhum;





  • permite que você crie facilmente várias entidades idênticas.





Os objetos quase atendem a esses requisitos. Mas então, para criar várias entidades, seria necessário criar vários objetos com um pequeno número de propriedades e comportamento mínimo (ou nenhum). Por comportamento mínimo, quero dizer um pequeno número de métodos. Basicamente, para cada entidade necessária, você teria que criar um novo objeto, o que é um desperdício de recursos. Em vez disso, você pode usar Enum



um objeto de um tipo especial.





Enum



, , , . Enum



, . GitHub, . Enum



.





enum- Java :

, . : , ,  — , . .





  , . , : , . , . Enum



. (), : AT, EE ES.





Enum



:





public enum Country {
    AT("Austria", Arrays.asList("Vienna", "Salzburg", "Innsbruck"), 43),
    EE("Estonia", Arrays.asList("Tallinn", "Haapsalu", "Tartu"), 372),
    ES("Spain", Arrays.asList("Malaga","Madrid","Valencia","Corralejo"), 34);

    public final String label;
    public final List<String> cities;
    public int phoneNumberPrefix;

    Country(String label, List<String> cities, int phoneNumberPrefix) {
        this.label = label;
        this.cities = cities;
        this.phoneNumberPrefix = phoneNumberPrefix;
    }
}
      
      



, , . , label



, cities



phoneNumberPrefix



. : String



, List<String>



int



.





Enum



. , , AT



, : label



«», cities



(), : «», «» «», phoneNumberPrefix



«43».





, Enum



, : Country..



. : Country.AT.label



  «». , Country



.





, , .





Page



:





@FindBy(css = "#country") private WebElement countryDropdown;
@FindBy(css = "#city") private WebElement cityDropdown;
@FindBy(css = "#phone") public WebElement phoneNumberField;
@FindBy(css = "[type='submit']") public WebElement submitButton;

public Select countrySelect() {
    return new Select(countryDropdown);
}

public Select citySelect() {
    return new Select(cityDropdown);
}
      
      



countrySelect()



Select



. citySelect()



Select



. WebElement phoneNumberField



.





, , - . GitHub, .





 1.

, . , , 10 . :





, :





@Test
void selectCountryCityAndTypePhoneNumber() {
}
      
      



. , label



ES Enum



. : Country.ES.label



. :





page.countrySelect().selectByVisibleText(Country.ES.label);
      
      



, . : Country.ES.cities



. , ( ), : Country.ES.cities.get(2)



. :





page.citySelect().selectByVisibleText(Country.ES.cities.get(2));
      
      



, . Enum



: Country.ES.phoneNumberPrefix



. , 10 : Country.ES.phoneNumberPrefix + randomNumeric(8)



.





randomNumeric



, Apache Commons :





import static org.apache.commons.lang3.RandomStringUtils.randomNumeric;
      
      



, . Maven pom.xml



( ):





<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>
      
      



:





@Test
void selectCountryCityAndTypePhoneNumber() {
    page.countrySelect().selectByVisibleText(Country.ES.label);
    page.citySelect().selectByVisibleText(Country.ES.cities.get(2));
    page.phoneNumberField.sendKeys(Country.ES.phoneNumberPrefix + randomNumeric(8));
}
      
      



 2.

, . : ( ), , . , - .





.  , Enum



label



. , . , .





. , . , .





, Enum



. , , .





 





2, . (expected) . , label



Enum



, , . , -  Selenium, , (String), . -, , . .





List<String> expectedCountries = new ArrayList<>();
expectedCountries.add("");
      
      



label



, Enum



. Enum



label



. Enum



, Country.values()



.





for (Country country : Country.values()) {
    expectedCountries.add(country.label);
}
      
      



: «», «», «», «».





- (actual) . Select



, WebElements



, Select



. getText()



(option) .





List<String> actualCountries = new ArrayList<>();
for (WebElement option : page.countrySelect().getOptions()) {
    actualCountries.add(option.getText());
}
      
      



, , , Enum . , .





Collections.sort(expectedCountries);
Collections.sort(actualCountries);
assertEquals(expectedCountries, actualCountries);
      
      



:





@Test
void checkCountries() {
    List<String> expectedCountries = new ArrayList<>();
    expectedCountries.add("");
    for (Country country : Country.values()) {
        expectedCountries.add(country.label);
    }
    List<String> actualCountries = new ArrayList<>();
    for (WebElement option : page.countrySelect().getOptions()) {
        actualCountries.add(option.getText());
    }
    Collections.sort(expectedCountries);
    Collections.sort(actualCountries);
    assertEquals(expectedCountries, actualCountries);
}
      
      



 3.

. , . JavaScript, .





Enum



:





for (Country country : Country.values()) {
      
      



, for



, label



Enum



:





page.countrySelect().selectByVisibleText(country.label);
      
      



, , , . , , (actual) . -:





List<String> actualCities = new ArrayList<>();
for (WebElement option : page.citySelect().getOptions()) {
    actualCities.add(option.getText());
}
      
      



. Enum List<String> cities



. , . addAll()



cities



.





List<String> expectedCities = new ArrayList<>();
expectedCities.add(0, "");
expectedCities.addAll(country.cities);
      
      



. , .





Collections.sort(expectedCities);
Collections.sort(actualCities);
assertEquals(expectedCities, actualCities);
      
      



, , , . . , . :





@Test
void checkCities() {
    for (Country country : Country.values()) {
        page.countrySelect().selectByVisibleText(country.label);
        List<String> actualCities = new ArrayList<>();
        for (WebElement option : page.citySelect().getOptions()) {
            actualCities.add(option.getText());
        }
        List<String> expectedCities = new ArrayList<>();
        expectedCities.add(0, "");
        expectedCities.addAll(country.cities);
        Collections.sort(expectedCities);
        Collections.sort(actualCities);
        assertEquals(expectedCities, actualCities);
    }
}
      
      



, Enum



. GitHub:





  • HTML-  .





  • Page  .





  • Enum  ,





  •  .










"Java QA Automation Engineer".



"HTTP. Postman, newman, fiddler (charles), curl, SOAP. SOAPUI".












All Articles