给定项目的集合
或Iterable
,是否有任何匹配器
(或匹配器组合)将断言每个项目都匹配单个匹配器
?
例如,给定此项目类型:
public interface Person {
public String getGender();
}
我想写一个断言,即一个集合中的所有项目都有一个特定的性别值。我在想这样的事情:
Iterable<Person> people = ...;
assertThat(people, each(hasProperty("gender", "Male")));
有没有办法不用自己编写每个
匹配器就可以做到这一点?
比批准的答案更具可读性,循环中没有单独的断言:
import static org.assertj.core.api.Assertions.assertThat;
assertThat(people).allMatch((person) -> {
return person.gender.equals("male");
});
IMHO这更具可读性:
people.forEach(person -> Assert.assertThat(person.getGender()), Is.is("male"));
使用每个匹配器。
import org.hamcrest.beans.HasPropertyWithValue;
import org.hamcrest.core.Every;
import org.hamcrest.core.Is;
import org.junit.Assert;
Assert.assertThat(people, (Every.everyItem(HasPropertyWithValue.hasProperty("gender", Is.is("male")))));
Hamcrest还提供了匹配器#everyItem
作为该匹配器的快捷方式。
完整示例
@org.junit.Test
public void method() throws Exception {
Iterable<Person> people = Arrays.asList(new Person(), new Person());
Assert.assertThat(people, (Every.everyItem(HasPropertyWithValue.hasProperty("gender", Is.is("male")))));
}
public static class Person {
String gender = "male";
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
问题内容: 给定一个或项,是否有任何(或匹配项的组合)断言每个项都匹配一个? 例如,给定此项目类型: 我想写一个断言,表示s 集合中的所有项目都具有特定值。我在想这样的事情: 没有自己写匹配器,有什么办法吗? 问题答案: 使用匹配器。 Hamcrest还提供了一种快捷方式。 完整的例子
我有两个对象集合。这两个集合中的对象是不同类型的,并且有一个自定义匹配器来检查它们是否引用相同的东西。此外,集合的顺序相同。比方说,我们可以按名称比较这些集合中的实体,它们按该名称排序,我们有一个自定义匹配器,如果名称相同,则返回true。 我需要的是一个匹配器,它将逐项迭代这两个集合,并使用现有的自定义匹配器比较这些对(我也可以修改它)。 有人知道怎么做吗? 我的意思是:
我正在寻找一个Hamcrest Matcher到返回java的单元测试方法。util。可选类型。比如: 是否有任何可用的实现抛出Maven存储库?
我想断言ICollection包含满足约束集合的项。对于Java Hamcrest,我将使用匹配器。包含任何订单(匹配器…匹配器)。也就是说,对于给定的集合,集合的每个项都将匹配匹配器中的一个匹配器。 我正努力在nUnit 3中找到一个等价物。有人存在吗?
我正试图将Hamcrest匹配器引入到我的团队的一些代码中。为了消除匹配实例集合的复杂性,我想为我的每个匹配器编写一个帮助器方法,我希望匹配的集合。所以本质上,我是在包装容器InAnyOrder。也就是说,如果有人以null作为预期和实际传递,我希望它匹配。但是按照我编写代码的方式,如果为预期传递null,它将抛出一个NullPointerExcION。所以我想返回一个IsNull匹配器,如果nu
描述 (Description) java.util.regex.Pattern.matcher(CharSequence input)方法创建一个匹配此模式的给定输入的匹配器。 声明 (Declaration) 以下是java.util.regex.Pattern.matcher(CharSequence input)方法的声明。 public Matcher matcher(CharSeque