Java >> Java tutorial >  >> Tag >> JUnit

Skrivning af tests til webapplikationer med TestProject OpenSDK og JUnit 5

Efter du har integreret TestProject OpenSDK med JUnit 5, kan du begynde at skrive de faktiske testmetoder. Dette blogindlæg beskriver, hvordan du kan skrive test til webapplikationer med TestProject OpenSDK og JUnit 5.

Når du har læst dette blogindlæg, skal du:

  • Forstå, hvordan du kan skrive en ny JUnit 5-testklasse, der indeholder testmetoder, der bruger TestProject OpenSDK.
  • Kan køre automatiserede test, der bruger TestProject OpenSDK og JUnit 5.

Lad os begynde.

Introduktion til systemet under test

I løbet af dette blogindlæg lærer du at skrive automatiserede tests til søgefunktionen på denne blog. Kravene til søgefunktionen er:

Først , søgeformularen vises på sidebjælken, og den er synlig på hver side, der har en sidebjælke. Når det er sagt, skal du, når du skriver automatiserede test til søgefunktionen, åbne forsiden af ​​denne blog (https://www.petrikainulainen.net/blog/), før du indtaster en søgeterm i søgeformularen.

Følgende figur identificerer placeringen af ​​søgeformularen:

Anden , når du vil bruge søgefunktionen, skal du indtaste søgeordet i søgeformularen og trykke på enter-tasten.

Tredje , hvis der ikke findes nogen resultater, viser søgeresultatsiden teksten:'Ingen resultater fundet.'. Følgende figur illustrerer layoutet af søgeresultatsiden, når der ikke findes nogen resultater:

Fjerde , hvis søgeresultater findes, viser søgeresultatsiden de fundne søgeresultater. Følgende figur illustrerer layoutet af søgeresultatsiden, når søgeresultaterne er fundet:

Dernæst lærer du at skrive automatiserede tests til søgefunktionen.

Skrivning af test til søgefunktionen

Når du vil skrive automatiserede test til søgefunktionen, skal du følge disse trin:

Først , skal du oprette en ny testklasse og integrere TestProject OpenSDK med JUnit 5. Når du har gjort dette, ser kildekoden til din testklasse således ud:

import io.testproject.sdk.DriverBuilder;
import io.testproject.sdk.drivers.web.ChromeDriver;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.openqa.selenium.chrome.ChromeOptions;

class BlogSearchTest {

    private static ChromeDriver driver;

    @BeforeAll
    static void configureTestProjectOpenSDK() {
        driver = new DriverBuilder<ChromeDriver>(new ChromeOptions())
                .withCapabilities(new ChromeOptions())
                .build(ChromeDriver.class);
    }

    @AfterAll
    static void shutdownTestProjectOpenSDK() {
        driver.quit();
    }
}

Anden , skal du oprette de indre klasser, som indeholder de faktiske testmetoder. Du kan oprette disse indre klasser ved at følge disse trin:

  1. Opret en indre klasse, der indeholder testmetoden, som sikrer, at systemet under test fungerer som forventet, når der ikke findes nogen søgeresultater.
  2. Opret en indre klasse, der indeholder de testmetoder, der sikrer, at systemet under test fungerer som forventet, når et søgeresultat er fundet.

Når du har oprettet de nødvendige indre klasser, ser kildekoden for din testklasse således ud:

import io.testproject.sdk.DriverBuilder;
import io.testproject.sdk.drivers.web.ChromeDriver;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.openqa.selenium.chrome.ChromeOptions;

class BlogSearchTest {

    private static ChromeDriver driver;

    @BeforeAll
    static void configureTestProjectOpenSDK() {
        driver = new DriverBuilder<ChromeDriver>(new ChromeOptions())
                .withCapabilities(new ChromeOptions())
                .build(ChromeDriver.class);
    }

    @Nested
    class WhenNoSearchResultsAreFound {

    }

    @Nested
    class WhenOneSearchResultIsFound {

    }

    @AfterAll
    static void shutdownTestProjectOpenSDK() {
        driver.quit();
    }
}

Tredje , skal du skrive testmetoden, som sikrer, at systemet under test fungerer som forventet, når der ikke findes nogen søgeresultater. Du kan skrive denne testmetode ved at følge disse trin:

  1. Åbn forsiden af ​​denne blog (https://www.petrikainulainen.net/blog/).
  2. Indtast søgeordet i søgeformularen, og tryk på enter-tasten.
  3. Bekræft, at søgeresultatsiden viser teksten:'Ingen resultater fundet.'.

Efter du har skrevet denne testmetode, ser kildekoden for din testklasse således ud:

import io.testproject.sdk.DriverBuilder;
import io.testproject.sdk.drivers.web.ChromeDriver;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class BlogSearchTest {

    private static ChromeDriver driver;

    @BeforeAll
    static void configureTestProjectOpenSDK() {
        driver = new DriverBuilder<ChromeDriver>(new ChromeOptions())
                .withCapabilities(new ChromeOptions())
                .build(ChromeDriver.class);
    }

    @Nested
    class WhenNoSearchResultsAreFound {

        @Test
        void shouldDisplayEmptySearchResultPage() {
            driver.get("https://www.petrikainulainen.net/blog/");

            WebElement searchField = driver.findElement(By.id("s"));
            searchField.sendKeys("noresults");
            searchField.sendKeys(Keys.ENTER);

            WebElement noResultElement = driver.findElement(
                    By.cssSelector(
                            ".template-search .content .post_box .archive_content"
                    )
            );
            assertThat(noResultElement.getText()).isEqualTo("No results found.");
        }
    }

    @Nested
    class WhenOneSearchResultIsFound {

    }

    @AfterAll
    static void shutdownTestProjectOpenSDK() {
        driver.quit();
    }
}

Fjerde , skal du skrive testmetoden, som sikrer, at søgeresultatsiden viser ét søgeresultat, når ét søgeresultat er fundet. Du kan skrive denne testmetode ved at følge disse trin:

  1. Åbn forsiden af ​​denne blog (https://www.petrikainulainen.net/blog/).
  2. Indtast søgeordet i søgeformularen, og tryk på enter-tasten.
  3. Sørg for, at søgeresultatsiden viser ét søgeresultat.

Efter du har skrevet denne testmetode, ser kildekoden for din testklasse således ud:

import io.testproject.sdk.DriverBuilder;
import io.testproject.sdk.drivers.web.ChromeDriver;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class BlogSearchTest {

    private static ChromeDriver driver;

    @BeforeAll
    static void configureTestProjectOpenSDK() {
        driver = new DriverBuilder<ChromeDriver>(new ChromeOptions())
                .withCapabilities(new ChromeOptions())
                .build(ChromeDriver.class);
    }

    @Nested
    class WhenNoSearchResultsAreFound {

        @Test
        void shouldDisplayEmptySearchResultPage() {
            driver.get("https://www.petrikainulainen.net/blog/");

            WebElement searchField = driver.findElement(By.id("s"));
            searchField.sendKeys("noresults");
            searchField.sendKeys(Keys.ENTER);

            WebElement noResultElement = driver.findElement(
                    By.cssSelector(
                            ".template-search .content .post_box .archive_content"
                    )
            );
            assertThat(noResultElement.getText()).isEqualTo("No results found.");
        }
    }

    @Nested
    class WhenOneSearchResultIsFound {

        @Test
        void shouldDisplaySearchResultPageWithOneSearchResult() {
            driver.get("https://www.petrikainulainen.net/blog/");

            WebElement searchField = driver.findElement(By.id("s"));
            searchField.sendKeys("oneresult");
            searchField.sendKeys(Keys.ENTER);

            List<WebElement> searchResults = driver.findElements(
                    By.tagName("article")
            );
            assertThat(searchResults).hasSize(1);
        }
    }

    @AfterAll
    static void shutdownTestProjectOpenSDK() {
        driver.quit();
    }
}

Femte , skal du skrive testmetoden, som sikrer, at søgeresultatsiden viser det korrekte søgeresultat, når ét søgeresultat er fundet. Du kan skrive denne testmetode ved at følge disse trin:

  1. Åbn forsiden af ​​denne blog (https://www.petrikainulainen.net/blog/).
  2. Indtast søgeordet i søgeformularen, og tryk på enter-tasten.
  3. Sørg for, at titlen på det viste søgeresultat er korrekt.

Efter du har skrevet denne testmetode, ser kildekoden for din testklasse således ud:

import io.testproject.sdk.DriverBuilder;
import io.testproject.sdk.drivers.web.ChromeDriver;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.List;

import static org.assertj.core.api.Assertions.assertThat;

class BlogSearchTest {

    private static ChromeDriver driver;

    @BeforeAll
    static void configureTestProjectOpenSDK() {
        driver = new DriverBuilder<ChromeDriver>(new ChromeOptions())
                .withCapabilities(new ChromeOptions())
                .build(ChromeDriver.class);
    }

    @Nested
    class WhenNoSearchResultsAreFound {

        @Test
        void shouldDisplayEmptySearchResultPage() {
            driver.get("https://www.petrikainulainen.net/blog/");

            WebElement searchField = driver.findElement(By.id("s"));
            searchField.sendKeys("noresults");
            searchField.sendKeys(Keys.ENTER);

            WebElement noResultElement = driver.findElement(
                    By.cssSelector(
                            ".template-search .content .post_box .archive_content"
                    )
            );
            assertThat(noResultElement.getText()).isEqualTo("No results found.");
        }
    }

    @Nested
    class WhenOneSearchResultIsFound {

        @Test
        void shouldDisplaySearchResultPageWithOneSearchResult() {
            driver.get("https://www.petrikainulainen.net/blog/");

            WebElement searchField = driver.findElement(By.id("s"));
            searchField.sendKeys("oneresult");
            searchField.sendKeys(Keys.ENTER);

            List<WebElement> searchResults = driver.findElements(
                    By.tagName("article")
            );
            assertThat(searchResults).hasSize(1);
        }

        @Test
        void shouldDisplaySearchResultPageWithCorrectSearchResult() {
            driver.get("https://www.petrikainulainen.net/blog/");

            WebElement searchField = driver.findElement(By.id("s"));
            searchField.sendKeys("oneresult");
            searchField.sendKeys(Keys.ENTER);

            WebElement searchResult = driver.findElement(
                    By.tagName("article")
            );
            WebElement resultTitle = searchResult.findElement(
                    By.className("headline")
            );
            assertThat(resultTitle.getText())
                    .isEqualTo("Java Testing Weekly 22 / 2018");
        }
    }

    @AfterAll
    static void shutdownTestProjectOpenSDK() {
        driver.quit();
    }
}

Lad os gå videre og finde ud af, hvordan du kan køre automatiserede test, der bruger TestProject OpenSDK og JUnit 5.

Kørsel af dine automatiske tests

Du kan køre dine tests ved at følge disse trin:

Først , skal du starte TestProject-agenten og sikre, at den kører, før du kører dine tests. Hvis du vil sikre dig, at din agent er klar til at køre dine tests, skal du følge disse trin:

  1. Åbn app.testproject.io-webstedet.
  2. Åbn fanen 'Agenter'.
  3. Sørg for, at din agents status er:'Klar'.

Følgende figur illustrerer layoutet af siden 'Agenter':

Anden , skal du køre dine tests ved at bruge en af ​​disse muligheder:

  • Hvis du bruger Gradle, kan du køre dine tests ved at bruge kommandoen:gradle clean test .
  • Hvis du bruger Maven, kan du køre dine tests ved at bruge kommandoen:mvn clean test .
  • Du kan også køre (eller fejlfinde) dine tests ved at bruge din IDE.

Du kan nu skrive test til webapplikationer ved at bruge TestProject OpenSDK og JUnit 5, og du ved, hvordan du kan køre dine tests. Lad os opsummere, hvad du lærte af dette blogindlæg.

Oversigt

Dette blogindlæg har lært dig fire ting:

  • Du bør overveje at bruge en konfiguration, der sikrer, at alle testmetoder fundet fra samme testklasse vises på den samme testrapport.
  • Du bør adskille forskellige scenarier ved at bruge indre klasser.
  • Du skal sikre dig, at TestProject-agenten kører, før du kører dine tests.
  • Når du kører dine tests, sender TestProject-agenten testudførelsesdata til TestProject-platformen, som genererer testrapporter og udgiver de genererede rapporter på TestProject-rapporteringsdashboardet.

Java tag