gpt4 book ai didi

java - 创建新属性时测试 BeanUtils/test 应该失败

转载 作者:搜寻专家 更新时间:2023-11-01 00:52:31 24 4
gpt4 key购买 nike

我正在使用 BeanUtils 将某些 DTO 类映射到域类(反之亦然)。 (使用 BeanUtils 复制属性)

我想测试我的代码。如果有人编写在 DTO 或域类中创建额外属性,我该如何编写测试失败。

我仍在努力的尝试是遍历 BeanUtils.getPropertyDescriptors(class) 并找到相应的 getter 方法,然后为每个类(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");
}

}

如果您关心测试映射本身,那么您为两个类中存在的每个属性调用 getter 并检查其结果是否相等的方法应该可行。不过,请记住“类”属性,它的值对于不同类的对象肯定会有所不同。

关于java - 创建新属性时测试 BeanUtils/test 应该失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7773979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com