Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用AssertJ断言列表中的单个对象_Java_Unit Testing_Junit_Assertj - Fatal编程技术网

Java 使用AssertJ断言列表中的单个对象

Java 使用AssertJ断言列表中的单个对象,java,unit-testing,junit,assertj,Java,Unit Testing,Junit,Assertj,我正在使用AssertJ库在测试中执行断言。在本例中,我想测试列表中的每个Date对象是否都在其他日期之后 因此,我显然可以做到以下几点: Date dateOne = new Date(someTimestamp); Date dateTwo = new Date(otherTimestamp); Assertions.assertThat(dateOne).isAfter(dateTwo); 毫无疑问 但如果我想测试列表中的每个元素,以确保它们都在给定的日期之后,该怎么办呢 Date

我正在使用AssertJ库在测试中执行断言。在本例中,我想测试列表中的每个
Date
对象是否都在其他日期之后

因此,我显然可以做到以下几点:

Date dateOne = new Date(someTimestamp);
Date dateTwo = new Date(otherTimestamp);

Assertions.assertThat(dateOne).isAfter(dateTwo);
毫无疑问

但如果我想测试列表中的每个元素,以确保它们都在给定的日期之后,该怎么办呢


Date dateOne = new Date(someTimestamp);
Date dateTwo = new Date(otherTimestamp);
Date dateThree = new Date(fooBarTimestamp);

List<Date> dates = Arrays.asList(dateOne, dateTwo);

//and here I want to make sure that all Dates in dates are after dateThree
但是比较器看起来非常整洁,最重要的是,我的SonarQube抱怨这个签名:

Condition<List<? extends Date>> allAfterDate(final Date dateToCompare) {...}
但我觉得这不可能使用大多数开发人员都非常喜欢的这种酷炫的AssertJ语法;-)

有没有一种方法可以让我做类似的事情

Assertions.assertThat(dates).everySingleElement().isAfter(dateThree);
如果这是不可能的,那么什么是最好和最干净的方法呢

(我知道我可以用
//NOSONAR
压制声纳,我只是不想)

试试看:

希望它对您有所帮助,并且是一种足够酷的语法;-)

试试看:


希望它对您有所帮助,并且是一种足够酷的语法;-)

那么你的问题是什么?最好的方法是什么?如何修复您的问题?请注意有关泛型的警告?抱歉,已编辑,因此问题更清楚。我可以使用类似于断言.assertThat(dates.EverysingElement().isAfter(dateThree)的东西吗或者如果不是,那么什么是最好的方法。那么你的问题是什么?最好的方法是什么?如何修复您的问题?请注意有关泛型的警告?抱歉,已编辑,因此问题更清楚。我可以使用类似于断言.assertThat(dates.EverysingElement().isAfter(dateThree)的东西吗或者如果不是,那么最好的方法是什么。这很酷;-)在可读性方面比我做的要好得多。我发现我使用的是旧版本的AssertJ包。谢谢。这很酷;-)在可读性方面比我做的要好得多。我发现我使用的是旧版本的AssertJ包。谢谢
SoftAssertions assertions = new SoftAssertions();

dates.forEach( date -> {
    assertions.assertThat(date).isAfter(dateThree);
});

assertions.assertAll();
Assertions.assertThat(dates).everySingleElement().isAfter(dateThree);
assertThat(dates).allSatisfy(date -> assertThat(date).isAfter(dateThree));