junit - 列表的 Hamcrest 匹配器>
问题描述
我正在尝试为返回的方法编写 JUnit 测试
List<Set<String>> result = build(List<Account> accounts, List<Order> orders);
我可以检查我是否有预期的条目数
assertThat(result, hasSize(2));
但是我很难找到关于如何编写断言列表包含一个设置大小为 2 的条目和一个设置大小为 4 的条目的明确文档。如果有人可以指出我需要的相关文档阅读,我将不胜感激
解决方案
我不记得 Hamcrest 对这个特定的设置有任何东西。
我只会测试其中一组的大小,然后确保总和为 6
使用来自hamcrest.org的 hamcrest-2.2.jar并且在第 3 次失败,因为我故意将其创建为失败,预期值为 5。测试报告设置为 6 时没有失败:JUnit4
assertThat
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 :)
}
}
测试类:
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);
}
}
推荐阅读
- python - 在另一个类中使用实例方法作为装饰器
- jpa - 如果父级不存在,弹簧数据保存只会创建级联子级
- groovy-eclipse - 在 Eclipse IDE (Oxygen) 上为 Eclipse 提交者安装 groovy-eclipse 时出现 code=10053 错误
- python - 在for循环python中编码和保存多个数组
- javascript - 在 Node.JS/NPM 的 MySQL 库中使用 Promise 和查询
- processing - 处理 3.3.7 draw() 停止循环
- java - Java 模块:Mockito 2.20.0 的可访问性问题
- sql - 如何在 select 语句的别名中使用表数据?
- arduino - Pro trinket EEPROM 读写
- python - pip install pcapy 无法打开包含文件“pcap.h”