Siirry pääsisältöön

PropertyDescriptorTester

Avaa ChatGPT:ssä
23.06 Experimental
Java API

PropertyDescriptorTester webforJ:ssä helpottaa kolmannen osapuolen web-komponenttien testaamista, jotka on integroitu sovellukseesi. Se validoi, että PropertyDescriptor-luokassa määritellyt ominaisuudet ovat oikein linkitettyjä niiden getter- ja setter-metodeihin ja varmistaa, että oletusarvoiset käyttäytymiset käsitellään johdonmukaisesti. Tämä työkalu on erityisen hyödyllinen kolmansien osapuolten komponenttien tarjoamien ominaisuuksien toiminnallisuuden varmistamiseksi ilman tarpeetonta testauslogiikkaa.

kokeellinen ominaisuus

webforJ PropertyDescriptorTester -adapteri on tällä hetkellä kokeellinen ominaisuus. Rikkovia muutoksia voidaan tuoda esiin milloin tahansa.

Yhteenveto

Kolmannen osapuolen web-komponenttien kanssa työskennellessä on olennaista varmistaa, että ominaisuudet käyttäytyvät odotetusti. PropertyDescriptorTester automatisoi tämän prosessin validoimalla, että ominaisuudet:

  • On oikein kartoitettu niiden getter- ja setter-metodeihin.
  • Säilyttää odotetut oletusarvot ja mukautetut käyttäytymiset.
  • Vältetään yleisiä integraatio-ongelmia, kuten eri nimisiä ominaisuuksia tai epäjohdonmukaisia oletusarvoja.

Työkalu tukee annotaatioita monimutkaisimmille käyttötapauksille, kuten merkityksettömien ominaisuuksien poistamiselle tai mukautettujen getter- ja setter-metodien määrittämiselle, mikä tekee siitä monipuolisen vaihtoehdon integraatiotestaamiseen.

Kuinka PropertyDescriptorTester toimii

Testausprosessi sisältää useita automatisoituja vaiheita:

  1. Luokan skannaus: PropertyDescriptorScanner tunnistaa kaikki PropertyDescriptor-kentät komponenttiluokassa, ja jättää automaattisesti huomiotta @PropertyExclude-annotaatiolla merkitsemät kentät.

  2. Metodien ratkaisu: Oletus getter- ja setter-metodeja havaitaan nimikäytännön perusteella (get<OminaisuudenNimi>/set<OminaisuudenNimi>). Ei-standardeille toteutuksille annotaatiot kuten @PropertyMethods määrittelevät mukautetut metodin nimet tai kohdeluokat.

  3. Validointi: Oletusarvot määritetään setter-metodilla, haetaan getterillä ja verrataan varmistamisen vuoksi. Mahdollinen epäyhteneväisyys laukaisee AssertionError-virheen, joka tuo esiin erityisen ongelman.

  4. Virheraportointi: Testeri antaa yksityiskohtaista palautetta kaikista validointivirheistä, kuten puuttuvista metodeista, epäyhtenäisistä oletusarvoista tai ominaisuuksien vääristä määrityksistä.

Testien kirjoittaminen PropertyDescriptorTester-kanssa

Tässä on esimerkki, joka osoittaa perusominaisuuksien validointia AppLayout-komponentille:

Esimerkki: Perusvalidointi

MyComponent.java
public class MyComponent extends ElementCompositeContainer {
private final PropertyDescriptor<Boolean> drawerOpened =
PropertyDescriptor.property("drawerOpened", false);
private final PropertyDescriptor<String> headerTitle =
PropertyDescriptor.property("headerTitle", "Oletusarvoinen Otsikko");

// setterit ja getterit
}

Testitapaus

MyComponentTest.java
import com.webforj.component.element.PropertyDescriptorTester;
import org.junit.jupiter.api.Test;

class MyComponentTest {

MyComponent component = new MyComponent();

@Test
void validateProperties() {
try {
PropertyDescriptorTester.run(MyComponent.class, component);
} catch (Exception e) {
fail("PropertyDescriptor testi epäonnistui: " + e.getMessage());
}
}
}

Tämä testi tarkistaa automaattisesti:

  • Että drawerOpened-ominaisuudella on voimassa olevat getter- ja setter-metodit.
  • Että headerTitle oletusarvo on "Oletusarvoinen Otsikko".

Edistyneet käyttötapaukset annotaatioilla

Monimutkaisimmille tilanteille PropertyDescriptorTester tukee annotaatioita, joilla voidaan mukauttaa tai poistaa ominaisuuksia testauksesta.

Poista ominaisuudet @PropertyExclude-annotaatiolla

Poista ominaisuudet, jotka riippuvat ulkoisista järjestelmistä tai eivät ole merkityksellisiä testissä. Esimerkiksi:

@PropertyExclude
private final PropertyDescriptor<String> excludedProperty =
PropertyDescriptor.property("excludedProperty", "Poistettu");

Mukauta metodeja @PropertyMethods-annotaatiolla

Määrittele mukautettu getter, setter tai kohdeluokka, kun oletusnimikäytännöt eivät päde:

@PropertyMethods(getter = "retrieveValue", setter = "updateValue", target = InnerClass.class)
private final PropertyDescriptor<String> customProperty =
PropertyDescriptor.property("customProperty", "Oletusarvo");