aufgerufen werden. Ich habe den folgenden Test, bei dem ich überprüfen muss, ob alle Getter der Person-Klasse aufgerufen werden. Bis jetzt habe ich mockitos verify() verwendet, um sicherzustellen, dass jeder Getter aufgerufen wird. Gibt es eine Möglichkeit, dies durch Nachdenken zu tun? Es kann der Fall sein, dass der Person-Klasse ein neuer Getter hinzugefügt wird, aber der Test wird dies vermissen.Vergewissern Sie sich, dass alle Gettermethoden
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()???**
}
}
}
Großartig! In Bezug auf Ihren letzten Rat, denke ich, der Test ist nicht für Person, sondern für eine Klasse wie PersonBuilder, PersonCloner oder etwas – Raffaele
@Raffaele: True, aber hoffentlich die bessere Lösung gibt es tatsächlich zu überprüfen, dass jedes Feld kopiert wird, was bedeutet (aber nicht nötig) dass jeder getter aufgerufen wurde. –
Dies funktionierte tatsächlich mit minimalem Aufwand für die Überprüfung der Aufruf aller Getter-Methoden. Einige Änderungen jedoch: 'BeanInfo beanInfo = Introspector.getBeanInfo (Person.class);' und hinzugefügt für 'setOfDescriptors' ein Filter mit:' .filter (p ->! P.contains ("getClass")) 'so dass diese Methode wird nicht berücksichtigt. –