繁体   English   中英

根据AssertJ中的原始值检查从Collection中提取的值

[英]Checking values extracted from Collection against primitive value in AssertJ

在这种情况下,我需要集合中的所有对象在字段中都具有特定的布尔值。 为此,extracting()似乎是一个非常好的候选者。 我能够很容易地“访问”该字段,但是当我想再次检查该值时,我无法在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).extracting("someBoolean").containsOnly(Boolean.FALSE);

一个很简单的方法是...

assertThat( llList ).filteredOn( "someBoolean", Boolean.FALSE ).isEmpty();

当然,这需要在AssertJ方面进行反思,但这就是为此付出的代价……

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM