PropertyDescriptorTester
De PropertyDescriptorTester in webforJ vereenvoudigt het testen van derde partij webcomponenten die in uw app zijn geïntegreerd. Het valideert dat eigenschappen gedefinieerd met PropertyDescriptor correct zijn gekoppeld aan hun getter- en setter-methoden en zorgt ervoor dat defaultgedragingen consistent worden behandeld. Deze tool is bijzonder nuttig voor het verifiëren van de functionaliteit van eigenschappen die door derde partijen worden blootgesteld, zonder dat repetitieve testlogica vereist is.
Overzicht
Bij het werken met derde partij webcomponenten is het essentieel 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 defaultwaarden en aangepaste gedragingen behouden.
- Veelvoorkomende integratieproblemen vermijden, zoals mismatches in eigenschapsnamen of inconsistente defaults.
De tool ondersteunt annotaties voor complexere gebruiksscenario's, 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 Scannen: De
PropertyDescriptorScanneridentificeert 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@PropertyMethodsaangepaste methodenamen of doelklassen. -
Validatie: Defaultwaarden worden toegewezen met behulp van de setter-methode, opgehaald met de getter en vergeleken om de correctheid te waarborgen. Elke mismatch veroorzaakt een
AssertionError, die het specifieke probleem markeert. -
Foutmeldingen: De tester biedt gedetailleerde feedback over eventuele validatiefouten, zoals ontbrekende methoden, inconsistente defaults of foute configuraties van eigenschappen.
Tests schrijven met PropertyDescriptorTester
Hier is een voorbeeld dat de 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 is mislukt: " + e.getMessage());
}
}
}
Deze test verifieert automatisch:
- Dat
drawerOpenedgeldige getter- en setter-methoden heeft. - Dat
headerTitlestandaard is ingesteld op"Default Title".
Geavanceerde gebruiksgevallen met annotaties
Voor complexere scenario's ondersteunt PropertyDescriptorTester annotaties om eigenschappen aan te passen 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", "Uitgesloten");
Methodes 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", "Standaardwaarde");