我需要测试返回的对象列表是否与预期值相同。因为我不想仅仅为了测试而重写 equals 方法,所以我正在寻找一种解决方案来按值比较类。我找到了 ReflectionEquals 类,但这不适用于列表。有没有其他方法可以对此进行测试?
@Test
public void testUseOnFieldWithRuleApplied() {
List<Field> argumentFields = new ArrayList<>(Arrays.asList(new Field(1), new Field(2)));
List<Field> expectedFields = new ArrayList<>(Arrays.asList(new Field(0), new Field(1)));
List<Field> returnedFields = this.toBeTestedRule.useOnFields(argumentFields);
assertTrue(new ReflectionEquals(expectedFields).matches(returnedFields));
}
最佳答案
使用 fest-assert 库。
使用该库,您可以编写以下内容:
Assertions.assertThat(list1).isEqualTo(list2);
但这仍然依赖于列表的 equals 方法。
另一种方法是这样写:
Assertions.assertThat(list1).containsExactly(list2.toArray());
或者
Assertions.assertThat(list1).hasSize(list2.size()).containsSequence(list2.toArray());
最后的可能性 (containsSequence) 不依赖于列表的 equals 方法。
但是,我不明白为什么您不想依赖 equals 方法,因为它应该为每个列表正确实现。
关于java - 对象列表上的 JUnit Mockito ReflectionEquals,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58644989/