Junit 用于列表的Hamcrest matchers<;设置<;字符串>&燃气轮机;

Junit 用于列表的Hamcrest matchers<;设置<;字符串>&燃气轮机;,junit,hamcrest,Junit,Hamcrest,我正在尝试为返回的方法编写JUnit测试 List<Set<String>> result = build(List<Account> accounts, List<Order> orders); 但是我很难找到关于如何编写断言的清晰文档,断言列表包含一个设置大小为2的条目和一个设置大小为4的条目。如果有人能告诉我需要阅读的相关文档,我将不胜感激我不记得Hamcrest有任何关于此特定设置的信息 我只需测试其中一个集合的大小,然后确保总和为6 使

我正在尝试为返回的方法编写JUnit测试

List<Set<String>> result = build(List<Account> accounts, List<Order> orders);

但是我很难找到关于如何编写断言的清晰文档,断言列表包含一个设置大小为2的条目和一个设置大小为4的条目。如果有人能告诉我需要阅读的相关文档,我将不胜感激

我不记得Hamcrest有任何关于此特定设置的信息

我只需测试其中一个集合的大小,然后确保总和为6

使用from和
JUnit4
在第三个
assertThat
中失败,因为我故意创建了一个预期值为5的失败。设置为6时,测试报告无故障:

import static org.hamcrest.Matchers.*;
import static org.hamcrest.MatcherAssert.assertThat;

import org.junit.Test;

import java.util.List;
import java.util.Set;

public class MyListTest {

  @Test
  public void listSize() {
    MyList tester = new MyList();
    List<Set<String>> result = tester.generate();

    // assert statements
    assertThat(result, hasSize(2));                                        // yours
    assertThat(result.get(0), anyOf(hasSize(2), hasSize(4)));              // is either 2 or 4
    assertThat((result.get(0).size() + result.get(1).size()), equalTo(5)); // sum must be 6. FAILS with 5 :)
  }
}
导入静态org.hamcrest.Matchers.*;
导入静态org.hamcrest.matcherasert.assertThat;
导入org.junit.Test;
导入java.util.List;
导入java.util.Set;
公共类MyListTest{
@试验
公共空列表大小(){
MyList tester=新的MyList();
列表结果=tester.generate();
//断言语句
断言(结果,hasSize(2));//您的
断言(result.get(0)、anyOf(hasSize(2)、hasSize(4));//为2或4
assertThat((result.get(0.size()+result.get(1.size()),equalTo(5));//总和必须为6。失败为5:)
}
}
测试等级:

import java.util.List;
import java.util.Set;

public class MyList {
  public List<Set<String>> generate() {
    Set<String> s1 = Set.of("Hello", "World");
    Set<String> s2 = Set.of("Testing", "One", "Two", "Three");
    return List.of(s1,s2);
  }
}
import java.util.List;
导入java.util.Set;
公共类MyList{
公共列表生成(){
集合s1=集合(“你好”,“世界”);
集合s2=集合(“测试”、“一”、“二”、“三”);
返回列表(s1、s2);
}
}
import java.util.List;
import java.util.Set;

public class MyList {
  public List<Set<String>> generate() {
    Set<String> s1 = Set.of("Hello", "World");
    Set<String> s2 = Set.of("Testing", "One", "Two", "Three");
    return List.of(s1,s2);
  }
}