我正在尝试测试从 wsdl 生成的 Pojo 类以提高代码覆盖率,但我遇到了一个我不知道如何解决的问题。
生成的类如下所示:
public class NOF implements java.io.Serializable {
private java.lang.String nOFName;
public java.lang.String getNOFName() {
return this.nOFName;
}
public void setNOFName(java.lang.String nOFName) {
this.nOFName = nOFName;
}
}
看起来 Pojo Validator 没有正确地将变量名nOFName
转换为 getter getNOFName
,而是寻找其他东西(我不知道是什么)。我得到的例外是:
java.lang.AssertionError: [PojoFieldImpl [field=private java.lang.String
mypackage.NOF.nOFName, fieldGetter=null, fieldSetter=null]] is missing a getter
当我将变量的名称更改为 时NOFName
,测试通过。如果我将其更改为nofName
并将方法重命名为getNofName
. 我知道问题出在缩写的名称上,但我真的不想更改生成的类,因为它们将来可能会重新生成。我需要编写自定义验证器吗?我猜 somoene 之前一定已经处理过这个问题(因为我认为这是一个完美的 openpojo 验证用例),但我还没有找到任何东西。
测试看起来像这样:
public class PojoTest {
@Test
public void testPojo() throws Exception{
PojoValidator validator = new PojoValidator();
validator.addRule(new GetterMustExistRule());
validator.addRule(new SetterMustExistRule());
validator.addTester(new GetterTester());
validator.addTester(new SetterTester());
for (PojoClass cls: PojoClassFactory.getPojoClasses("mypackage")){
validator.runValidation(cls);
}
}
}
编辑
我已经调试了openpojo库并且它搜索getnOFName
并且除了修复和重新编译库之外我无能为力:(