PropertyDescriptorTester
De PropertyDescriptorTester in webforJ vereenvoudigt het testen van derde partijen webcomponenten die in uw app zijn geïntegreerd. Het valideert dat 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 door derde partijen worden blootgesteld, zonder dat er repetitieve testlogica vereist is.
Overzicht
Bij het werken met derde partijen 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 gekoppeld aan hun getter- en setter-methoden.
- Verwachte standaardwaarden en aangepaste gedragingen behouden.
- Veelvoorkomende integratieproblemen vermijden, zoals mismatch in eigenschapsnamen of inconsistente standaarden.
Het hulpmiddel ondersteunt annotaties voor complexere use-cases, zoals het uitsluiten van irrelevante eigenschappen of het definiëren van aangepaste getter- en setter-methoden, waardoor het een veelzijdige optie is voor integratietests.
Hoe PropertyDescriptorTester werkt
Het testproces omvat verschillende geautomatiseerde stappen:
-
Klasse Scanning: De
PropertyDescriptorScanneridentificeert allePropertyDescriptorvelden binnen een componentklasse en sluit automatisch velden uit die zijn geannoteerd met@PropertyExclude. -
Method Resolutie: Standaard getter- en setter-methoden worden gedetecteerd op basis van naamgevingsconventies (
get<PropertyName>/set<PropertyName>). Voor niet-standaard implementaties specificeren annotaties zoals@PropertyMethodsaangepaste methodenamen of doelklassen. -
Validatie: Standaardwaarden worden toegewezen met de setter-methode, opgehaald met de getter en vergeleken om de juistheid te waarborgen. Elke mismatch veroorzaakt een
AssertionError, die het specifieke probleem benadrukt. -
Foutmelding: De tester biedt gedetailleerde feedback over eventuele validatiefouten, zoals ontbrekende methoden, inconsistente standaarden of verkeerd geconfigureerde 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", "Default Title");
// 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 mislukt: " + e.getMessage());
}
}
}
Deze test verifieert automatisch:
- Dat
drawerOpenedgeldige getter- en setter-methoden heeft. - Dat
headerTitlestandaard op"Default Title"ligt.
Geavanceerde use-cases met annotaties
Voor complexere scenario's ondersteunt PropertyDescriptorTester annotaties om eigenschappen van testen aan te passen of uit te sluiten.
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", "Uitsluiting");
Methoden aanpassen met @PropertyMethods
Definieer aangepaste getter, setter of doelklasse wanneer de standaard naamgevingsconventies niet van toepassing zijn:
@PropertyMethods(getter = "retrieveValue", setter = "updateValue", target = InnerClass.class)
private final PropertyDescriptor<String> customProperty =
PropertyDescriptor.property("customProperty", "Standaard Waarde");