TestBed 26.03
webforJ-näkymän testaaminen tarkoittaa yleensä sovelluksen käynnistämistä, selaimen avaamista ja sen ohjaamista Seleniumilla tai Playwrightilla. Näin havaitaan se, minkä vain selain voi näyttää, mutta jokaisessa testissä kuluu aikaa selaimen ja palvelimen käynnistämiseen sekä niiden välissä odottamiseen.
TestBed mahdollistaa webforJ:n testauksen ilman selainta. Näkymä suoritetaan tavallisessa JUnit-testissä. Selainta ei avata eikä palvelinta käynnistetä. Testi lisää näkymän, käsittelee sitä käyttäjän tavoin ja tarkistaa tuloksen Javasta. Komponentit liitetään näkymään, laukaisevat tapahtumansa ja navigoivat aivan kuten käynnissä olevassa sovelluksessa. Jokainen vuorovaikutus on valmis ennen testin seuraavan rivin suorittamista, joten odottelua ei tarvita eivätkä testit ole epävakaita.
Testin toiminta
TestBed-testi etenee käyttäjän tavoin. Se etsii komponentin sivulta, käsittelee sitä ja tarkistaa, mitä sivulla sen jälkeen näkyy. Seuraava lomake tilaa sähköpostiosoitteen uutiskirjeen, ja sen Subscribe-painike pysyy poissa käytöstä, kunnes kentässä on osoite:
import com.webforj.component.Composite;
import com.webforj.component.button.Button;
import com.webforj.component.field.TextField;
import com.webforj.component.html.elements.Div;
import com.webforj.component.html.elements.Paragraph;
public class NewsletterForm extends Composite<Div> {
public NewsletterForm() {
TextField email = new TextField("Email");
Paragraph status = new Paragraph();
Button subscribe =
new Button(
"Subscribe", e -> status.setText("Subscribed " + email.getValue()));
subscribe.setEnabled(false);
email.onModify(e -> subscribe.setEnabled(!email.getValue().isBlank()));
getBoundComponent().add(email, subscribe, status);
}
}
Testi etsii kentän ja painikkeen, kirjoittaa osoitteen, napsauttaa painiketta ja tarkistaa vahvistuksen:
@Test
void shouldSubscribeTheEmailTheUserTyped(WebforjTestbed context) {
context.add(new NewsletterForm());
var email = ComponentLocator.of(TextField.class).byLabel("Email").locate();
var subscribe = ComponentLocator.of(Button.class)
.byText("Subscribe")
.locate();
UserInteraction.type(email, "ada@example.com");
UserInteraction.click(subscribe);
assertTrue(
ComponentLocator.of(Paragraph.class)
.byText("Subscribed ada@example.com")
.isPresent());
}
TestBed jakautuu vaiheisiin seuraavasti:
- Etsiminen.
ComponentLocatorkuvaa komponenttia samaan tapaan kuin käyttäjä tunnistaa sen: tyypin ja näytettävän sisällön perusteella, esimerkiksi kentän tunnisteen avulla. Katso Komponenttien etsiminen. - Käyttäminen.
UserInteractionsuorittaa käyttäjän eleitä ja sallii vain sellaiset toiminnot, joita käyttäjäkin voisi tehdä. Käytöstä poistetun painikkeen napsauttaminen epäonnistuttaa testin sen sijaan, että painikkeen kuuntelija suoritettaisiin. Katso Käyttäjän vuorovaikutus. - Tarkistaminen.
verifyThattarkistaa, mitä käyttäjä näkisi komponentissa, ja tilannevedos vertaa koko näkymää sen tallennettuun kuvaukseen. Katso Väitteet ja Tilannevedokset.
Testi ei käsittele näkymän kenttiä suoraan. Se toimii sivulla näkyvän sisällön kautta, joten se läpäisee testin edelleen, vaikka näkymä olisi rakennettu eri tavalla, ja epäonnistuu silloin, kun käyttäjä näkisi jotain muuta.
Yksittäisten näkymien lisäksi TestBed navigoi reiteillä, testaa suojattuja näkymiä, käsittelee dialogeja ja suorittaa ajastimia, kuten Sovellusten testaaminen näyttää. TestBed toimii myös Spring Boot -sovelluksessa sen beanien ja tietoturvan kanssa.
Selaintesteillä on edelleen paikkansa, kun halutaan testata vain selaimessa näkyviä asioita, kuten tyylejä, asettelua ja asiakaskäyttäytymistä. TestBed kattaa loput: sen, miten näkymäsi toimivat käyttäjän käsitellessä niitä.
Aloita Aloittaminen-osiosta, jossa lisätään riippuvuus ja kirjoitetaan ensimmäinen testi.
Aiheet
Aloittaminen
Add the TestBed dependency, write a first test that adds a view and acts on it, and run the test.
Komponenttien etsiminen
Describe the components a TestBed test acts on the way a user picks them out on the page, by type, text, label and what they contain.
Käyttäjän vuorovaikutus
Act on the components of a TestBed test through the same gestures a user makes, and get the same events a user causes.
Väitteet
Check what the user would see on a component with verifyThat, and read failures that name the component and both values.
Tilannevedokset
Compare everything a view shows with a stored text description of it, read that description, and add the state of your own components to it.
Sovellusten testaaminen
Start a TestBed test with the routes or the whole app, navigate, test secured routes, answer dialogs, control timers, and answer for the browser.
Jatka oppimista
ArtikkeliClaude Code Java Web App: Build the Whole Thing, Screens Included
ArtikkeliThe AI coding agent verification loop for Java
ArtikkeliJava web app testing strategy: what to test, and where
ArtikkeliAI coding in Java: quality control for generated code
ArtikkeliAI Java web framework: how webforJ is built for AI work
ArtikkeliJava UI testing without a browser: the webforJ TestBed guide