PropertyDescriptorTester
De PropertyDescriptorTester
in webforJ vereenvoudigt het testen van derde-partij webcomponenten die in uw app zijn geïntegreerd. Het valideert of de eigenschappen die zijn gedefinieerd met PropertyDescriptor
correct zijn gekoppeld aan hun getter- en setter-methoden en zorgt ervoor dat standaardgedragingen consistent worden afgehandeld. Dit hulpmiddel is vooral nuttig voor het verifiëren van de functionaliteit van eigenschappen die worden blootgesteld door derde-partijcomponenten zonder dat repetitieve testlogica vereist is.
De webforJ PropertyDescriptorTester-adapter is momenteel een experimentele functie. Brekende wijzigingen kunnen op elk moment worden geïntroduceerd.
Overzicht
Wanneer u werkt met derde-partij webcomponenten, is het essentieel om ervoor te zorgen dat eigenschappen zich gedragen zoals verwacht. De PropertyDescriptorTester
automatiseert dit proces door te valideren dat eigenschappen:
- Correct zijn toegewezen aan hun getter- en setter-methoden.
- Verwachte standaardwaarden en aangepaste gedragingen behouden.
- Veelvoorkomende integratieproblemen vermijden, zoals mismatched eigenschapsnamen of inconsistente standaarden.
Het hulpmiddel ondersteunt annotaties voor complexere gebruikscases, zoals het uitsluiten van irrelevante eigenschappen of het definiëren van aangepaste getter- en setter-methoden, waardoor het een veelzijdige optie voor integratietests maakt.
Hoe PropertyDescriptorTester
werkt
Het testproces omvat verschillende geautomatiseerde stappen:
-
Klasse Scannen: De
PropertyDescriptorScanner
identificeert allePropertyDescriptor
-velden binnen een componentklasse en sluit automatisch velden uit die zijn geannoteerd met@PropertyExclude
. -
Methode Resolutie: Standaard getter- en setter-methoden worden gedetecteerd op basis van naamgevingsconventies (
get<PropertyName>
/set<PropertyName>
). Voor niet-standaard implementaties specificeren annotaties zoals@PropertyMethods
aangepaste methodenamen of doelklassen. -
Validatie: Standaardwaarden worden toegewezen met de setter-methode, opgehaald met de getter en vergeleken om de correctheid te waarborgen. Elke mismatch veroorzaakt een
AssertionError
, die het specifieke probleem benadrukt. -
Foutrapportage: De tester biedt gedetailleerde feedback over eventuele validatiefouten, zoals ontbrekende methoden, inconsistente standaarden of misconfiguraties van eigenschappen.
Tests schrijven met PropertyDescriptorTester
Hier is een voorbeeld dat basisvalidatie van eigenschappen voor een AppLayout
-component demonstreert:
Voorbeeld: Basisvalidatie
public class MyComponent extends ElementCompositeContainer {
private final PropertyDescriptor<Boolean> drawerOpened =
PropertyDescriptor.property("drawerOpened", false);
private final PropertyDescriptor<String> headerTitle =
PropertyDescriptor.property("headerTitle", "Standaard Titel");
// setters en getters
}
Testgeval
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 test is mislukt: " + e.getMessage());
}
}
}
Deze test verifieert automatisch:
- Dat
drawerOpened
geldige getter- en setter-methoden heeft. - Dat
headerTitle
standaard is ingesteld op"Standaard Titel"
.
Geavanceerde gebruiksscenario's met annotaties
Voor complexere scenario's ondersteunt PropertyDescriptorTester
annotaties om eigenschappen te personaliseren of uit te sluiten van testen.
Uitsluiten van eigenschappen met @PropertyExclude
Sluit eigenschappen uit die afhankelijk zijn van externe systemen of niet relevant zijn voor de test. Bijvoorbeeld:
@PropertyExclude
private final PropertyDescriptor<String> excludedProperty =
PropertyDescriptor.property("excludedProperty", "Uitsluitend");
Methoden aanpassen met @PropertyMethods
Definieer aangepaste getter, setter of doelklasse wanneer de standaardnaamgevingsconventies niet van toepassing zijn:
@PropertyMethods(getter = "retrieveValue", setter = "updateValue", target = InnerClass.class)
private final PropertyDescriptor<String> customProperty =
PropertyDescriptor.property("customProperty", "Standaard Waarde");