我想比较2个列表:
assertThat(actual.getList(), is(Matchers.containsInAnyOrder(expectedList)));
Run Code Online (Sandbox Code Playgroud)
但想法
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)
Run Code Online (Sandbox Code Playgroud)
我该怎么写呢?
好的,我认为这将是一个简短的问题.我有一个按日期排序的ArrayList,当然我看到它有效,但我也想为它编写一个测试.
我想检查列表中的下一个值(日期)是否低于上一个值.我能够使用一些fors并添加临时列表来做到这一点,但我想知道是否有更简单的解决方案.我在hamrest文档中读到,有一些contains想法(hamrest contains)迭代一个对象(列表,地图等),但我仍然不知道下一步该做什么.
我目前正在编写一个单元测试,用于检查方法是否正确对列表进行排序。
排序方法覆盖类中的compare方法,Comparator并使用 对列表进行排序Collections.sort()。
这可能不是一个技术问题,但我正在寻找一种方法来使用 JUnit 的断言来检查列表是否正确排序......
该列表按它所持有的类型的内部参数排序,我称之为id. 因此,当列表包含 3 个 ID 为 3,1,2 的项目时,它会将它们排序为 1,2,3。
Long expected1 = listOfObjects.get(0).getId()
Long expected2 = listOfObjects.get(1).getId()
Long expected3 = listOfObjects.get(2).getId()
Run Code Online (Sandbox Code Playgroud)
然后在那些 Long 对象上使用断言看起来既不干净也不聪明。我正在寻找一个想法如何干净而巧妙地测试这个案例,但我没有想法......
我想比较一个列表是否是另一个列表的子列表
假设我有以下列表
List<String> checkList = Arrays.asList("a", "d");
List<String> actualList = Arrays.asList("a", "b", "c", "d");
Run Code Online (Sandbox Code Playgroud)
我想检查是否actualList包含checkList. 我可以迭代每个值并进行比较。但是有没有 hamcrest matcher 可以完成这项工作
对于前。
a,d应该通过
a, b,c应该通过
但是a,e应该会失败
支持hasItems单独传递字符串,并contains检查所有值,in支持列表中存在一个项目。但我想要
assertThat(actualList,containsList(checkList))
是否有可用的内置匹配器或者我需要编写自定义匹配器?