Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W teście jednostkowym programu SQL Server zostanie uruchomiony skrypt testowy Transact-SQL i zwróci wynik. Czasami wyniki są zwracane jako zestaw wyników. Wyniki można zweryfikować przy użyciu warunków testowych. Możesz na przykład użyć warunku testu, aby sprawdzić, ile wierszy zostało zwróconych w określonym zestawie wyników lub sprawdzić, przez jaki czas trwało uruchomienie określonego testu. Aby uzyskać więcej informacji na temat warunków testowych, zobacz Używanie warunków testowych w testach jednostkowych programu SQL Server.
Zamiast używać warunków testowych, można również użyć asercji Transact-SQL, które są instrukcjami, THROW lub RAISERROR, w skrypcie Transact-SQL. W pewnych okolicznościach możesz użyć asercji Transact-SQL zamiast warunku testowego.
Używanie asercji Transact-SQL
Przed podjęciem decyzji o zweryfikowaniu danych przy użyciu asercji Transact-SQL lub przy użyciu warunków testowych należy wziąć pod uwagę następujące kwestie.
Wydajność. Szybsze jest uruchamianie asercji Transact-SQL na serwerze niż najpierw przeniesienie danych na komputer kliencki i manipulowanie nim lokalnie.
Znajomość języka. Możesz preferować konkretny język na podstawie bieżącej wiedzy i dlatego wybrać asercje Transact-SQL lub warunki testowe w języku C# albo Visual Basic.
Skomplikowana walidacja. W niektórych przypadkach można tworzyć bardziej złożone testy w języku C# lub Visual Basic i weryfikować testy na kliencie.
Prostota. Często łatwiej jest użyć wstępnie zdefiniowanego warunku testu niż do zapisania równoważnego skryptu w języku Transact-SQL.
Starsze biblioteki walidacji. Jeśli masz już kod, który przeprowadza walidację, możesz go użyć w teście jednostkowym programu SQL Server zamiast używać warunków testowych.
Oznacz metody testów jednostkowych z oczekiwanym wyjątkiem
Aby oznaczyć metodę testu jednostkowego programu SQL Server z oczekiwanymi wyjątkami, dodaj następujący atrybut:
<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]
Where:
- nnnnn jest liczbą oczekiwanego komunikatu, na przykład 14025
- x to stopień oczekiwanego wyjątku
- y jest stanem oczekiwanego wyjątku
Wszystkie nieokreślone parametry są ignorowane. Przekaż te parametry do instrukcji RAISERROR w kodzie bazy danych. Jeśli określisz właściwość MatchFirstError = true, atrybut pasuje do dowolnego błędu SqlErrors w wyjątku. Domyślne zachowanie (MatchFirstError = true) jest zgodne tylko z pierwszym błędem, który występuje.
Aby zapoznać się z przykładem używania oczekiwanych wyjątków i negatywnego testu jednostkowego programu SQL Server, zobacz Przewodnik: tworzenie i uruchamianie testu jednostkowego programu SQL Server.
Instrukcja RAISERROR
Uwaga / Notatka
Użyj THROW zamiast RAISERROR.
RAISERROR jest obecnie przestarzały.
Możesz bezpośrednio użyć asercji Transact-SQL na serwerze, korzystając z instrukcji RAISERROR w skrypcie Transact-SQL. Jego składnia to:
RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)
where:
-
@ErrorMessageto dowolny komunikat o błędzie zdefiniowany przez użytkownika. Możesz sformatować ten ciąg komunikatu podobnie jak funkcjęprintf_s. -
@ErrorSeverityjest poziomem ważności zdefiniowanym przez użytkownika z zakresu od 0 do 18.
Uwaga / Notatka
Wartości "0" i "10" dla poziomu ważności nie powodują niepowodzenia testu jednostkowego programu SQL Server. Możesz użyć dowolnej innej wartości z zakresu od 0 do 18, aby spowodować niepowodzenie testu.
@ErrorState jest dowolną liczbą całkowitą z zakresu od 1 do 127. Tej liczby całkowitej można użyć do odróżnienia wystąpień pojedynczego błędu wywoływanego w różnych lokalizacjach w kodzie.
Aby uzyskać więcej informacji, zobacz RAISERROR. Przykład użycia RAISERROR w teście jednostkowym programu SQL Server znajduje się w artykule How to: Write a SQL Server Unit Test that Runs within the Scope of a Single Transaction (Jak napisać test jednostkowy programu SQL Server uruchamiany w zakresie pojedynczej transakcji).