NUnit w wersji 3.6 wprowadził dość ciekawą funkcję — Assert.Multiple
. Dzięki niej, dostajemy informacje na temat wszystkich testów, które nie przeszły. Przyjrzyjmy się temu bliżej… Do tej pory, używając kilku asercji naraz, jedna niespełniona asercja powodowała, że dalszy kod nie jest wykonywany. Na przykład:
Assert.That(2 + 2, Is.EqualTo(4));
Assert.That(2 + 2, Is.EqualTo(5));
Assert.That(2 + 2, Is.EqualTo(6));
Dla powyższego kodu:
Assert.Multiple
działa następująco:
Dla kodu
Assert.Multiple(() =>
{
Assert.That(2 + 2, Is.EqualTo(4));
Assert.That(2 + 2, Is.EqualTo(5));
Assert.That(2 + 2, Is.EqualTo(6));
});
Otrzymamy komunikat:
One or more failures in Multiple Assert block:
1) Expected: 5
But was: 4
2) Expected: 6
But was: 4
Czy to jest nowość w świecie frameworków do testowania? Nie. Analogiczną funkcjonalność w Świętej Pamięci MbUnicie można zastosować przez nałożenie atrybutu MultipleAsserts. Kiedy stosować?
TestCase
).Assert.Multiple
nadaje się też do testów niejednostkowych, np. integracyjnych, akceptacyjnych, itp., tam gdzie to rozwiązanie daje nam pełniejszy obraz danego testu.Po więcej, odsyłam do oficjalnej dokumentacji: https://github.com/nunit/docs/wiki/Multiple-Asserts.