Klasa testowana:
public class Entity {
private int field1;
private int field2;
private int notSignificantField;
@Override
public int hashCode() {
...
}
@Override
public boolean equals(Object object) {
...
}
public Entity(int field1, int field2, int notSignificantField) {
this.field1 = field1;
this.field2 = field2;
this.notSignificantField = notSignificantField;
}
...
}
Klasa testująca:
public class EntityTest extends AbstractEqualsTest<Entity> {
@Override
public Entity objectThatShouldBeEqualA() {
return new Entity(1, 2, 33);
}
@Override
public Entity objectThatShouldBeEqualB() {
return new Entity(1, 2, 44);
}
@Override
public Entity objectThatShouldBeEqualC() {
return new Entity(1, 2, 55);
}
@Override
public Entity objectThatShouldNotBeEqual() {
return new Entity(1, 1, 33);
}
}
Szybkie pytanie i Google sugeruje co najmniej dwie gotowe biblioteki: Unitils i openpojo. Bardzo chetnie zobaczylbym, jak sprawdzaja sie ww. (i podobne) biblioteki.
OdpowiedzUsuńpytanie filozoficzno-programistyczne: czy w ogóle warto to testować jeżeli IDE sam stworzy metody hashCode/equals a Ty tylko musisz wskazać mu które pola ma brać pod uwagę?
OdpowiedzUsuńMożna spytać, czy w ogóle warto testować większość rzeczy. Generalnie uważam, że czasami warto napisać testa nawet dla pierdołowatej metody (a equals jest dość istotną metodą), bo wtedy jak przychodzi ktoś inny, zmienia i test się sypie, to znak, że może jednak przesadził.
OdpowiedzUsuń