Siirry pääsisältöön

PropertyDescriptorTester

Avaa ChatGPT:ssä
23.06 Koe-aloite
Java API

PropertyDescriptorTester webforJ:ssä yksinkertaistaa kolmannen osapuolen verkkokomponenttien testaamista, jotka on integroitu sovellukseesi. Se validoi, että PropertyDescriptor-luokassa määritellyt ominaisuudet ovat oikein linkitettyjä niiden getter- ja setter-menetelmiin ja varmistaa, että oletuskäyttäytyminen käsitellään johdonmukaisesti. Tämä työkalu on erityisen hyödyllinen kolmansien osapuolten komponenttien tarjoamien ominaisuuksien toiminnan vahvistamiseksi ilman toistuvaa testilogikkaa.

Experimental feature
This feature is experimental and may change or be removed in a future release.

Yleiskatsaus

Työskennellessäsi kolmannen osapuolen verkkokomponenttien kanssa, on olennaista varmistaa, että ominaisuudet toimivat odotetulla tavalla. PropertyDescriptorTester automatisoi tämän prosessin validoimalla, että ominaisuudet:

  • On oikein määritetty niiden getter- ja setter-menetelmiin.
  • Säilyttävät odotetut oletusarvot ja mukautetut käyttäytymiset.
  • Vältetään yleisiä integraatio-ongelmia, kuten virheellisiä ominaisuusnimien vastaavuuksia tai epäjohdonmukaisia oletusarvoja.

Työkalu tukee annotaatioita monimutkaisemmissa käyttötapauksissa, kuten merkityksettömien ominaisuuksien sulkemisessa tai mukautettujen getter- ja setter-menetelmien määrittämisessä, mikä tekee siitä monipuolisen vaihtoehdon integraatiotestaukselle.

Kuinka PropertyDescriptorTester toimii

Testausprosessi sisältää useita automatisoituja vaiheita:

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

  2. Metodien ratkaisu: Vakiomaiset getter- ja setter-menetelmät havaitaan nimeämiskäytäntöjen perusteella (get<PropertyName>/set<PropertyName>). Ei-vakiototeutuksille annotaatiot, kuten @PropertyMethods, määrittelevät mukautettuja metodin nimiä tai kohdeluokkia.

  3. Validointi: Oletusarvot määritetään setter-menetelmällä, haetaan getterillä ja verrataan oikeellisuuden varmistamiseksi. Kaikki epäjohdonmukaisuudet laukaisevat AssertionError-virheen, joka korostaa erityistä ongelmaa.

  4. Virheiden raportointi: Testeri tarjoaa yksityiskohtaista palautetta kaikista validoitumisvirheistä, kuten puuttuvista menetelmistä, epäjohdonmukaisista oletusarvoista tai ominaisuuksien väärästä konfiguroinnista.

Testien kirjoittaminen PropertyDescriptorTester-työkalulle

Tässä on esimerkki, joka osoittaa perusominaisuuden validoimisen 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", "Oletusotsikko");

// 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-testissä tapahtui virhe: " + e.getMessage());
}
}
}

Tämä testi vahvistaa automaattisesti:

  • Sen, että drawerOpened-ominaisuudella on voimassa olevat getter- ja setter-menetelmät.
  • Sen, että headerTitle-ominaisuuden oletusarvo on "Oletusotsikko".

Edistyneet käyttötapaukset annotaatioilla

Monimutkaisempia skenaarioita varten PropertyDescriptorTester tukee annotaatioita ominaisuuksien mukauttamiseen tai sulkemiseen testauksesta.

Poista ominaisuuksia @PropertyExclude-annotaatiolla

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

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

Mukauta menetelmiä @PropertyMethods-annotaatiolla

Määritä mukautettu getter, setter tai kohdeluokka, kun oletuskäytäntöjä ei voida soveltaa:

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