Aloittaminen 26.03
TestBed on webforJ:n selainriippumaton testausratkaisu: se suorittaa näkymiä ja komponentteja tavallisissa JUnit-testeissä ilman selainta tai palvelinta. Tällä sivulla lisätään riippuvuus, kirjoitetaan ensimmäinen testi ja suoritetaan se.
@WebforjTest-annotaatio luo WebforjTestbed-kontekstin luokan jokaista testiä varten. Testissä ComponentLocator etsii sivun komponentit, ja UserInteraction simuloi käyttäjän toimia niiden kanssa.
Riippuvuuden lisääminen
TestBed toimitetaan erillisenä moduulina. Lisää se sovellukseesi testiriippuvuutena:
<dependency>
<groupId>com.webforj</groupId>
<artifactId>webforj-testbed-junit</artifactId>
<scope>test</scope>
</dependency>
Versio määräytyy webforJ Bill of Materials (BOM) -määrityksen mukaan, joten riippuvuudelle ei ilmoiteta versiota. Archetypesta luotu projekti tuo BOM:n jo valmiiksi. Moduuli tuo mukanaan myös JUnit Jupiter API:n.
Spring Boot -sovellukset käyttävät sen sijaan webforj-spring-testbed-moduulia. Katso Spring-testaus.
Ensimmäisen testin kirjoittaminen
Seuraava lomake tervehtii käyttäjän kirjoittamaa nimeä:
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 GreetingForm extends Composite<Div> {
public GreetingForm() {
TextField name = new TextField("Name");
Paragraph greeting = new Paragraph();
Button greet = new Button(
"Greet", e -> greeting.setText("Hello, " + name.getValue() + "!"));
getBoundComponent().add(name, greet, greeting);
}
}
Testi kirjoittaa nimen, napsauttaa Greet-painiketta ja tarkistaa tervehdyksen:
import static com.webforj.testbed.assertion.WebforjAssertions.verifyThat;
import com.webforj.automation.act.UserInteraction;
import com.webforj.automation.find.ComponentLocator;
import com.webforj.component.button.Button;
import com.webforj.component.field.TextField;
import com.webforj.component.html.elements.Paragraph;
import com.webforj.samples.views.testbed.GreetingForm;
import com.webforj.testbed.WebforjTestbed;
import com.webforj.testbed.annotation.WebforjTest;
import org.junit.jupiter.api.Test;
@WebforjTest
class GreetingFormTest {
@Test
void shouldGreetTheNameTheUserTyped(WebforjTestbed context) {
context.add(new GreetingForm());
var name = ComponentLocator.of(TextField.class).byLabel("Name").locate();
var greet = ComponentLocator.of(Button.class).byText("Greet").locate();
UserInteraction.type(name, "Ada");
UserInteraction.click(greet);
verifyThat(ComponentLocator.of(Paragraph.class).locate())
.hasText("Hello, Ada!");
}
}
Testi etenee kuin käyttäjän toiminta:
@WebforjTestantaa jokaiselle testimetodilleWebforjTestbed-kontekstin, jossa testi suoritetaan.context.add()lisää lomakkeen sivulle ja suorittaa sen koko elinkaaren, kuten lomakkeen lisääminen kehykseen tekisi käynnissä olevassa sovelluksessa.ComponentLocatoretsii kentän sen tunnisteen ja painikkeen sen tekstin perusteella. Katso Komponenttien etsiminen.UserInteractionkirjoittaa ja napsauttaa kuten käyttäjä, jolloin painikkeen kuuntelija suoritetaan. Katso Käyttäjän toiminta.verifyThattarkistaa tekstin, jonka käyttäjä näkisi. Katso Vahvistukset.
Mitä @WebforjTest tarjoaa
Jokainen annotaatiolla merkityn luokan testi suoritetaan omassa WebforjTestbed-kontekstissaan. Konteksti alustetaan ennen jokaista testiä ja puretaan sen jälkeen, joten jokainen testi alkaa tyhjältä sivulta eikä edellisen testin tila säily.
Testi saa yhteyden kontekstiinsa kahdella tavalla:
- Määrittämällä testimetodille
WebforjTestbed-parametrin ensimmäisen testin tapaan. - Kutsumalla
WebforjTestbed.getCurrent()-metodia esimerkiksi metodista, jota luokan testit käyttävät yhdessä.
context.add() ottaa vastaan yhden tai useamman komponentin ja lisää ne kontekstin juurikehykseen, jonka context.getFrame() palauttaa.
Reittien välillä siirtyvissä testeissä komponenttien lisäämisen sijaan määritetään @WebforjTest-annotaation app-, routeClasses- tai routePackages-attribuutti. Katso Sovellusten testaaminen.
Testien suorittaminen
TestBed-testit ovat tavallisia JUnit-testejä. Suorita ne koontityökalulla tai IDE:stä kuten mikä tahansa JUnit-testi:
mvn test



