OpenPojo を使用して、JPA エンティティのテストを自動化しています。他のエンティティを参照しているエンティティに問題があります。
例:
public class Person {
@BusinessKey
private Integer id;
...getters/setters
@Override
public boolean equals(Object obj) {
return BusinessIdentity.areEqual(this, obj);
}
@Override
public int hashCode() {
return BusinessIdentity.getHashCode(this);
}
}
public class Employee {
@BusinessKey
private Integer id;
private Person person;
...getters/setters
@Override
public boolean equals(Object obj) {
return BusinessIdentity.areEqual(this, obj);
}
@Override
public int hashCode() {
return BusinessIdentity.getHashCode(this);
}
}
これが私のテストケースです:
// Create Rules to validate structure for POJO_PACKAGE
pojoValidator.addRule(new NoPublicFieldsRule());
pojoValidator.addRule(new NoPrimitivesRule());
pojoValidator.addRule(new NoStaticExceptFinalRule());
pojoValidator.addRule(new GetterMustExistRule());
pojoValidator.addRule(new SetterMustExistRule());
pojoValidator.addRule(new NoNestedClassRule());
// Create Testers to validate behaviour for POJO_PACKAGE
pojoValidator.addTester(new DefaultValuesNullTester());
pojoValidator.addTester(new SetterTester());
pojoValidator.addTester(new GetterTester());
for (PojoClass pojoClass : pojoClasses) {
pojoValidator.runValidation(pojoClass);
}
次の例外が発生します。
com.openpojo.business.exception.BusinessException: Field required and can't be null [PojoFieldImpl
Employee クラスから Person への参照を削除すると、例外がスローされることなくテストが実行されます。