Code Voir juste en dessousQue dois-je faire pour tester les objets EasyMock lors de l'utilisation de Generics? EasyMock
Notre interface générique
public interface Repository<INSTANCE_CLASS, INSTANCE_ID_CLASS> {
void add(INSTANCE_CLASS instance);
INSTANCE_CLASS getById(INSTANCE_ID_CLASS id);
}
Et une seule classe
public class Order {
private Integer id;
private Integer orderNumber;
// getter's and setter's
public void equals(Object o) {
if(o == null)
return false;
if(!(o instanceof Order))
return false;
// business key
if(getOrderNumber() == null)
return false;
final Order other = (Order) o;
if(!(getOrderNumber().equals(other.getOrderNumber())))
return false;
return true;
}
// hashcode
}
Et quand je fais le test suivant
private Repository<Order, Integer> repository;
@Before
public void setUp {
repository = EasyMock.createMock(Repository.class);
Order order = new Order();
order.setOrderNumber(new Integer(1));
repository.add(order);
EasyMock.expectLasCall().once();
EasyMock.replay(repository);
}
@Test
public void addOrder() {
Order order = new Order();
order.setOrderNumber(new Integer(1));
repository.add(order);
EasyMock.verify(repository)
}
Je reçois
Unexpected method call add([email protected]):
add([email protected]): expected: 1, actual: 0
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:43)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:72)
at $Proxy4.add(Unknown Source)
Pourquoi ça marche pas comme prévu ??? Que dois-je faire pour passer le test? Toute solution de contournement?
@Thomas THANS pour votre réponse, Thomas. ok à propos de booléens égaux. Avez-vous fait comme indiqué ci-dessus? J'utilise la version 2.5.2 –
@Arthur je l'ai changé et il fonctionne 2.5.2 encore, de la ligne de commande et dans Eclipse. J'ai vraiment copié collé tout votre code comme il est écrit ci-dessus et ajouté des getters et des setters. –
Vous avez raison. J'ai manqué du code dans l'implémentation d'égal à égal. Accepté. Bon à savoir EasyMock prend en charge Generic –