use*_*545 5 java spring unit-testing apache-commons-beanutils
我正在使用BeanUtils将一些DTO类映射到Domain类(反之亦然).(使用BeanUtils复制属性)
我想测试我的代码.如果某人在DTO或Domain类中创建了额外的属性,如何编写将失败的测试.
我正在尝试的尝试是遍历BeanUtils.getPropertyDescriptors(类)并找到相应的getter方法THEN为每个类(DTO和Domain)测试是否相等.
有什么想法吗?
由于项目依赖性约束,我宁愿不使用像Dozer这样的东西.我正在使用spring 3的beanutils.
如果您只关心测试额外的属性,您的测试方法可能如下所示:
void assertSameProperties(Class class1, Class class2) {
Set<String> properties = new HashSet<String>();
for (PropertyDescriptor prop : BeanUtils.getPropertyDescriptors(class1)) {
properties.add(prop.getName());
}
for (PropertyDescriptor prop : BeanUtils.getPropertyDescriptors(class2)) {
if (!properties.remove(prop.getName()) {
fail("Class " + class2.getName() + " has extra property " + prop.getName());
}
}
if (!properties.isEmpty()) {
fail("Class " + class1.getName() + " has extra properties");
}
}
Run Code Online (Sandbox Code Playgroud)
如果您关心测试映射本身,那么为两个类中存在的每个属性调用 getter 并检查它们的结果是否相等的方法应该可行。不过,请记住“类”属性,对于不同类的对象,其值肯定会有所不同。