AssertJ:一种检查对象字段值是否包含特定模式(正则表达式)的方法

AssertJ: A way to check for an object's field value if it contains a particular pattern (regex)

嗨Java大师和AssertJ大师,

我想问一下 AssertJ 中是否有一种方法可以验证对象列表中是否存在对象(例如 ArrayList<TestObject> listOfTestObjects)。该特定对象的字段(getter 方法的 return)值与模式或正则表达式模式匹配。

详情请看下面的例子:

class TestObject {
    private String stringValue;

    public String getValue() {
       return this.stringValue;
    }
    public void setValue(String newStringValue) {
        this.stringValue = newStringValue;
    }

}

ArrayList<TestObject> listOfTestObjects = new ArrayList<TestObject>();

// populate the list here...

assertThat(listOfTestObjects).extracting("value").containsAnElementWith("some regular expressions here...");

请注意,我并不期待“

...containsAnElementWith("some regular expressions here...");"

成为一个现有的方法(如果有的话实际上会更好)但这可以是 assertj 或 junit 中的一个特性/方法,我可以用它来简化单元测试自动化而不是循环通过其中一个然后进行匹配。


干杯

assertThat(listOfTestObjects).anyMatch(o -> o.getValue().matches(regex));

http://joel-costigliola.github.io/assertj/core-8/api/org/assertj/core/api/AbstractIterableAssert.html#anyMatch-java.util.function.Predicate-