J'ai le test suivant où je dois vérifier que tous les accesseurs de la classe Person sont appelés. Jusqu'à présent, j'ai utilisé verify() de mockito pour m'assurer que chaque getter est appelé. Y a-t-il un moyen de le faire par réflexion? Il se peut qu'un nouveau getter soit ajouté à la classe Person mais le test le manquera.Vérifiez que toutes les méthodes getter sont appelées
public class GetterTest {
class Person{
private String firstname;
private String lastname;
public String getFirstname() {
return firstname;
}
public String getLastname() {
return lastname;
}
}
@Test
public void testAllGettersCalled() throws IntrospectionException{
Person personMock = mock(Person.class);
personMock.getFirstname();
personMock.getLastname();
for(PropertyDescriptor property : Introspector.getBeanInfo(Person.class).getPropertyDescriptors()) {
verify(personMock, atLeast(1)).getFirstname();
//**How to verify against any getter method and not just getFirstName()???**
}
}
}
Great! En ce qui concerne votre dernier conseil, je pense que le test n'est pas pour Person mais pour une classe comme PersonBuilder, PersonCloner ou autre – Raffaele
@Raffaele: Vrai, mais j'espère que la meilleure solution est de vérifier que chaque champ est copié, ce qui implique (mais pas besoin) que chaque getter a été appelé. –
Cela a effectivement travaillé avec un minimum d'effort pour vérifier l'appel de toutes les méthodes getter. Certains changements cependant: 'BeanInfo beanInfo = Introspector.getBeanInfo (Person.class);' et ajouté pour 'setOfDescriptors' un filtre avec:' .filter (p ->! P.contains ("getClass")) 'de sorte que cette méthode n'est pas pris en considération. –