興味深い点assertAll
は、いくつ失敗しても、渡されたすべてのアサーションを常にチェックすることです。すべてが成功した場合、すべて問題ありません。少なくとも 1 つが失敗した場合は、問題が発生したすべての詳細な結果が得られます (そして、その問題は正しい)。
概念的に一緒に属する一連のプロパティをアサートするために使用するのが最適です。「これを一つに断言したい」と本能的に思うところ。
例
assertAll
素数と非素数でのチェックisPrime
は互いに独立しているため、特定の例は最適なユースケースではありません。そのため、2つのテストメソッドを作成することをお勧めします。
city
しかし、フィールド、street
、を持つアドレスのような単純なクラスがあり、number
それらが期待どおりであることをアサートしたいとします。
Address address = unitUnderTest.methodUnderTest();
assertEquals("Redwood Shores", address.getCity());
assertEquals("Oracle Parkway", address.getStreet());
assertEquals("500", address.getNumber());
ここで、最初のアサーションが失敗するとすぐに、2 番目のアサーションの結果が表示されなくなります。これは非常に面倒です。これには多くの方法があり、JUnit JupiterassertAll
はその 1 つです。
Address address = unitUnderTest.methodUnderTest();
assertAll("Should return address of Oracle's headquarter",
() -> assertEquals("Redwood Shores", address.getCity()),
() -> assertEquals("Oracle Parkway", address.getStreet()),
() -> assertEquals("500", address.getNumber())
);
テスト中のメソッドが間違ったアドレスを返す場合、次のエラーが表示されます。
org.opentest4j.MultipleFailuresError:
Should return address of Oracle's headquarter (3 failures)
expected: <Redwood Shores> but was: <Walldorf>
expected: <Oracle Parkway> but was: <Dietmar-Hopp-Allee>
expected: <500> but was: <16>