Używanie klas Assert do testowania jednostkowego
Użyj klas Microsoft.VisualStudio.TestTools.UnitTesting Assert przestrzeni nazw, aby zweryfikować określone funkcje. Metoda testu jednostkowego wykonuje kod metody w kodzie aplikacji, ale zgłasza poprawność zachowania kodu tylko w przypadku uwzględnienia instrukcji Assert.
Rodzaje asertów
Microsoft.VisualStudio.TestTools.UnitTesting Przestrzeń nazw zawiera kilka rodzajów klas Assert.
W metodzie testowej można wywołać dowolne metody Microsoft.VisualStudio.TestTools.UnitTesting.Assert klasy, takie jak Assert.AreEqual. Klasa Assert ma wiele metod do wyboru, a wiele metod ma kilka przeciążeń.
Porównywanie ciągów i kolekcji
CollectionAssert Użyj klasy , aby porównać kolekcje obiektów lub zweryfikować stan kolekcji.
StringAssert Użyj klasy , aby porównać i zbadać ciągi. Ta klasa zawiera różne przydatne metody, takie jak StringAssert.Contains, StringAssert.Matchesi StringAssert.StartsWith.
Wyjątki
Wyjątek AssertFailedException jest zgłaszany za każdym razem, gdy test zakończy się niepowodzeniem. Test kończy się niepowodzeniem, jeśli upłynął limit czasu, zgłosi nieoczekiwany wyjątek lub zawiera instrukcję asercyjną, która generuje wynik Niepowodzenie .
Wartość AssertInconclusiveException jest zgłaszana za każdym razem, gdy test daje wynik Niejednoznaczny. Zazwyczaj dodasz instrukcję Assert.Inconclusive do testu, nad którym nadal pracujesz, aby wskazać, że nie jest jeszcze gotowy do uruchomienia.
Uwaga
Alternatywną strategią jest oznaczenie testu, który nie jest gotowy do uruchomienia za pomocą atrybutu IgnoreAttribute . Jednak ma to wadę, że nie można łatwo wygenerować raportu na temat liczby testów, które nie są implementowane.
Jeśli napiszesz nową klasę wyjątków asercji, dziedzicz z klasy UnitTestAssertException bazowej, aby ułatwić zidentyfikowanie wyjątku jako błędu asercji zamiast nieoczekiwanego wyjątku zgłaszanego z kodu testowego lub produkcyjnego.
Aby sprawdzić, czy zgłaszany jest wyjątek, który ma zostać zgłoszony przez metodę w kodzie aplikacji, użyj Assert.ThrowsException metody .