根据 AssertJ 中的原始值检查从 Collection 中提取的值
Checking values extracted from Collection against primitive value in AssertJ
我遇到过这种情况,我需要集合中的所有对象在字段中都具有特定的布尔值。 extracting() 似乎是一个很好的选择。我能够很容易地 'access' 该字段,但是当我想再次检查它的值时,我无法在 API 中找到一种干净的方法来完成它。我想到的第一件事是:
SomeService someService = new SomeService();
List<ClassA> llList = someService.getList();
assertThat(llList).extracting("someBoolean")
.are(new Condition<Object>() {
@Override
public boolean matches(Object o) {
return Boolean.FALSE.equals(o);
}
});
这似乎是很常见的检查,我很困惑,以至于我无法在 AssertJ 中找到更好的东西 API。为了提高可读性,我接下来做了以下事情:
assertThat(llList).extracting("someBoolean")
.are(createBooleanCondition(false));
public static Condition<Object> createBooleanCondition(boolean expected){
return new Condition<Object>() {
@Override
public boolean matches(Object o) {
return new Boolean(expected).equals(o);
}
};
}
是否有更清晰的方式来使用 AssertJ 表达这种断言?
注意:我可以使用 java8 lambda 来使它更清晰,但我的问题是针对 assertj 的,我也有硬性规定,我需要它在 java 1.7 中编译。
一个非常简单的方法是...
assertThat( llList ).filteredOn( "someBoolean", Boolean.FALSE ).isEmpty();
当然,这需要 AssertJ 方面的反思,但这是为类似的事情付出的代价...
要检查每个提取的布尔值是否为假,我会简单地做:
assertThat(llList).extracting("someBoolean").containsOnly(Boolean.FALSE);
我遇到过这种情况,我需要集合中的所有对象在字段中都具有特定的布尔值。 extracting() 似乎是一个很好的选择。我能够很容易地 'access' 该字段,但是当我想再次检查它的值时,我无法在 API 中找到一种干净的方法来完成它。我想到的第一件事是:
SomeService someService = new SomeService();
List<ClassA> llList = someService.getList();
assertThat(llList).extracting("someBoolean")
.are(new Condition<Object>() {
@Override
public boolean matches(Object o) {
return Boolean.FALSE.equals(o);
}
});
这似乎是很常见的检查,我很困惑,以至于我无法在 AssertJ 中找到更好的东西 API。为了提高可读性,我接下来做了以下事情:
assertThat(llList).extracting("someBoolean")
.are(createBooleanCondition(false));
public static Condition<Object> createBooleanCondition(boolean expected){
return new Condition<Object>() {
@Override
public boolean matches(Object o) {
return new Boolean(expected).equals(o);
}
};
}
是否有更清晰的方式来使用 AssertJ 表达这种断言?
注意:我可以使用 java8 lambda 来使它更清晰,但我的问题是针对 assertj 的,我也有硬性规定,我需要它在 java 1.7 中编译。
一个非常简单的方法是...
assertThat( llList ).filteredOn( "someBoolean", Boolean.FALSE ).isEmpty();
当然,这需要 AssertJ 方面的反思,但这是为类似的事情付出的代价...
要检查每个提取的布尔值是否为假,我会简单地做:
assertThat(llList).extracting("someBoolean").containsOnly(Boolean.FALSE);