java - 对象列表上的 JUnit Mockito ReflectionEquals

标签 java testing junit mockito

我需要测试返回的对象列表是否与预期值相同。因为我不想仅仅为了测试而重写 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/

相关文章:

java - 使用 jquery 使用循环动态更新带有 div 的 DOM

java - 在一个全局事务的范围内使用 JTA 同时调用对不同数据源的少量查询

testing - 调试测试 - 从关闭测试浏览器窗口获取 Testem/Qunit

java - 脚本应该等到浏览器手动关闭

Spring 配置 - 注入(inject) Mock Bean

java - 在 android 中使用 Google map api v2 显示我的轨迹

java - Spring Boot使用jpa sql和pageable

node.js - 如何解决 @0.21.0 上 tetscafe 上的问题(testcafe-live 不起作用)

python - 如何测试缺少的额外要求?

android - 找不到检测目标包 : com. xyz