比较两个未知类型的数组

时间:2020-01-18 08:26:45

标签: java arrays junit compare

在编写一些通用测试逻辑时,我经常使用反射。在给定的情况下,我遍历一个类的所有字段并比较这些字段的值。这些字段可以是数组类型,因此我必须对此进行区分:

Field[] fields = beanBeforeStore.getClass().getDeclaredFields();
or (Field field : fields) {
    ...
    if (field.getType().isArray()) {
       // How to best compare?
    }
    ...
}

这是JUnit测试的全部部分,该测试提供了assertArrayEquals,对于原始类型数组和对象数组而言,该.class1 { position: relative; background-image: url("https://images.sftcdn.net/images/t_app-cover-l,f_auto/p/ce2ece60-9b32-11e6-95ab-00163ed833e7/260663710/the-test-fun-for-friends-screenshot.jpg"); background-size: contain; background-repeat: no-repeat; height: 100px; width: 100px; }已被重载。因此,为了进行比较,我必须将值转换为数组类型。 因为我想让这部分通用,所以我有一个问题,就是数组可以是原始类型,也可以是任何对象类型。最好的方法是什么?

一些背景信息:此逻辑是测试已保存对象的一部分。因为对象不是作为一个整体持久存在,而是仅作为数据持久存在(不需要序列化可能反过来引用其他对象的服务)。每个领域的测试都需要具体。一些字段必须相同,而其他字段则必须相同(通过等号)。尽管某些对象实现了equals方法,但并非所有需要检查的字段都属于equals逻辑。

2 个答案:

答案 0 :(得分:0)

尝试:

java.util.Arrays.deepEquals(array1, array2);

答案 1 :(得分:0)

我建议不要在合理的地方避免反思。否则,从声音上看,Objects.equals似乎合适。

相关问题