当前位置: 首页 > 知识库问答 >
问题:

Hamcrest比较集合

慕容齐智
2023-03-14
assertThat(actual.getList(), is(Matchers.containsInAnyOrder(expectedList)));

但是想法

java: no suitable method found for assertThat(java.util.List<Agent>,org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>>)
method org.junit.Assert.<T>assertThat(T,org.hamcrest.Matcher<T>) is not applicable
  (no instance(s) of type variable(s) T exist so that argument type org.hamcrest.Matcher<java.lang.Iterable<? extends model.Agents>> conforms to formal parameter type org.hamcrest.Matcher<T>)
method org.junit.Assert.<T>assertThat(java.lang.String,T,org.hamcrest.Matcher<T>) is not applicable
  (cannot instantiate from arguments because actual and formal argument lists differ in length)

我该怎么写?

共有1个答案

邓正谊
2023-03-14

如果您想断言这两个列表是相同的,请不要用Hamcrest将事情复杂化:

assertEquals(expectedList, actual.getList());

如果您真的打算执行不区分顺序的比较,可以调用containsinanyOrdervarargs方法并直接提供值:

assertThat(actual.getList(), containsInAnyOrder("item1", "item2"));

(在本例中,假设您的列表是字符串而不是代理。)

assertThat(actual.getList(), containsInAnyOrder(expectedList.toArray(new String[expectedList.size()]));
 类似资料:
  • 有人能给我解释一下hamcrest是如何比较馆藏的,以及图书馆的不同方法是用来做什么的吗 我正在试图理解IsterableContainingAnyOrder#ContainingAnyOrder方法是如何工作的 ISiterableContainingAnyOrder类中有三个重载方法:

  • 您能帮助我在使用方法时哪里出错了吗?

  • 我做错了什么,怎么修复?

  • 问题内容: 您将如何简洁地声明元素的相等性,特别是在JUnit 4中? 问题答案: 您可以断言两个s彼此相等,这将调用 method。 此如果两个将传递s为相同的大小和包含相同的元素。

  • 我正在尝试使用Optaplanner来代替我自己安排我们的工作计划。系统有一个MySQL数据库,其中包含必要的信息和关系。对于这个问题,我将只使用我需要的三个表: 在Drools我有规则 在类Job中,我有一个函数missingSkillCount(): 当我运行我的程序时,Optaplanner返回,我的员工都没有任何技能。。。 但是,当我手动使用此函数(适用于接受员工作为参数):时,它确实返回