PropertyDescriptorTester
Le PropertyDescriptorTester dans webforJ simplifie les tests des composants web tiers intégrés dans votre application. Il valide que les propriétés définies avec PropertyDescriptor sont correctement liées à leurs méthodes getter et setter et garantit que les comportements par défaut sont gérés de manière cohérente. Cet outil est particulièrement utile pour vérifier la fonctionnalité des propriétés exposées par des composants tiers sans nécessiter de logique de test répétitive.
Vue d'ensemble
Lors de l'utilisation de composants web tiers, il est essentiel de s'assurer que les propriétés se comportent comme prévu. Le PropertyDescriptorTester automatise ce processus en validant que les propriétés :
- Sont correctement mappées à leurs méthodes getter et setter.
- Maintiennent des valeurs par défaut et des comportements personnalisés attendus.
- Évitent les problèmes d'intégration courants, tels que des noms de propriétés non correspondants ou des défauts incohérents.
L'outil prend en charge les annotations pour des cas d'utilisation plus complexes, tels que l'exclusion de propriétés non pertinentes ou la définition de méthodes getter et setter personnalisées, ce qui en fait une option polyvalente pour les tests d'intégration.
Comment fonctionne PropertyDescriptorTester
Le processus de test implique plusieurs étapes automatisées :
-
Analyse de classe : Le
PropertyDescriptorScanneridentifie tous les champsPropertyDescriptordans une classe de composant, en excluant automatiquement les champs annotés avec@PropertyExclude. -
Résolution de méthode : Les méthodes getter et setter standard sont détectées en fonction des conventions de nommage (
get<PropertyName>/set<PropertyName>). Pour les implémentations non standard, des annotations comme@PropertyMethodsspécifient des noms de méthodes personnalisés ou des classes cibles. -
Validation : Les valeurs par défaut sont attribuées à l'aide de la méthode setter, récupérées à l'aide du getter, et comparées pour garantir leur exactitude. Tout décalage déclenche une
AssertionError, soulignant le problème spécifique. -
Rapport d'erreurs : Le testeur fournit des retours détaillés sur toute défaillance de validation, telles que des méthodes manquantes, des défauts incohérents ou des configurations de propriétés incorrectes.
Rédaction de tests avec PropertyDescriptorTester
Voici un exemple démontrant la validation basique des propriétés pour un composant AppLayout :
Exemple : validation basique
public class MyComponent extends ElementCompositeContainer {
private final PropertyDescriptor<Boolean> drawerOpened =
PropertyDescriptor.property("drawerOpened", false);
private final PropertyDescriptor<String> headerTitle =
PropertyDescriptor.property("headerTitle", "Titre par Défaut");
// setters et getters
}
Cas de test
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("Le test PropertyDescriptor a échoué : " + e.getMessage());
}
}
}
Ce test vérifie automatiquement :
- Que
drawerOpenedpossède des méthodes getter et setter valides. - Que
headerTitlepar défaut est"Titre par Défaut".
Cas d'utilisation avancés avec des annotations
Pour des scénarios plus complexes, PropertyDescriptorTester prend en charge les annotations pour personnaliser ou exclure des propriétés des tests.
Exclure des propriétés avec @PropertyExclude
Excluez les propriétés qui dépendent de systèmes externes ou qui ne sont pas pertinentes pour le test. Par exemple :
@PropertyExclude
private final PropertyDescriptor<String> excludedProperty =
PropertyDescriptor.property("excludedProperty", "Exclu");
Personnaliser les méthodes avec @PropertyMethods
Définissez des getter, setter ou classes cibles personnalisés lorsque les conventions de nommage par défaut ne s'appliquent pas :
@PropertyMethods(getter = "retrieveValue", setter = "updateValue", target = InnerClass.class)
private final PropertyDescriptor<String> customProperty =
PropertyDescriptor.property("customProperty", "Valeur par Défaut");