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 w SQL Server wykonywany jest jeden lub więcej skryptów testowych Transact-SQL. Wyniki można ocenić w ramach skryptu Transact-SQL, a za pomocą THROW lub RAISERROR zasygnalizować błąd i niepowodzenie testu, albo warunki testowe mogą zostać zdefiniowane w teście w celu oceny wyników. Test zwraca wystąpienie klasy SqlExecutionResult . Wystąpienie tej klasy zawiera co najmniej jeden zestaw danych, czas wykonywania i wiersze, których dotyczy skrypt. Wszystkie te informacje są zbierane podczas wykonywania skryptu. Te wyniki można ocenić przy użyciu warunków testowych. Narzędzia SQL Server Data Tools udostępniają zestaw wstępnie zdefiniowanych warunków testowych. Można również tworzyć i używać warunków niestandardowych; Zobacz Niestandardowe warunki testowania dla testów jednostkowych programu SQL Server.
Wstępnie zdefiniowane warunki testu
W poniższej tabeli wymieniono wstępnie zdefiniowane warunki testu, które można dodać przy użyciu okienka Warunki testowe w projektancie testów jednostkowych programu SQL Server.
| Warunek testu | Opis warunku testu |
|---|---|
| Suma kontrolna danych | Kończy się niepowodzeniem, jeśli suma kontrolna zestawu wyników zwrócona ze skryptu Transact-SQL jest niezgodna z oczekiwaną sumą kontrolną. Aby uzyskać więcej informacji, zobacz Określanie sumy kontrolnej danych. Nuta: Ten warunek testu nie jest zalecany, jeśli zwracasz dane, które różnią się między przebiegami testów. Jeśli na przykład zestaw wyników zawiera wygenerowane daty lub godziny lub zawiera kolumny tożsamości, testy kończą się niepowodzeniem, ponieważ suma kontrolna jest inna w każdym przebiegu. |
| Pusty zestaw wyników | Niepowodzenie, jeśli zestaw wyników zwrócony ze skryptu Transact-SQL nie jest pusty. |
| Czas egzekucji | Występuje błąd, jeśli skrypt testowy Transact-SQL wykonuje się dłużej niż oczekiwano. Domyślny czas wykonywania to 30 sekund. Czas wykonywania dotyczy tylko testu skryptu testowego, a nie skryptu przed testowego ani skryptu po przetestowaniu. |
| Oczekiwany schemat | Kończy się niepowodzeniem, jeśli kolumny i typy danych zestawu wyników nie są zgodne z tymi określonymi dla warunku testu. Należy określić schemat za pomocą właściwości warunku testowego. Aby uzyskać więcej informacji, zobacz Określanie oczekiwanego schematu. |
| Niejednoznaczne | Zawsze generuje test z niejednoznacznym wynikiem. Jest to warunek domyślny dodany do każdego testu. Ten warunek testu jest uwzględniony, aby wskazać, że weryfikacja testu nie została zaimplementowana. Usuń ten warunek testu z testu po dodaniu innych warunków testu. |
| Niepusty zestaw wyników | Kończy się niepowodzeniem, jeśli zestaw wyników jest pusty. Możesz użyć tego warunku testowego lub elementu EmptyResultSet z funkcją Transact-SQL @@RAISERROR w skrypcie testowym, aby sprawdzić, czy aktualizacja działa prawidłowo. Możesz na przykład zapisać wartości przed aktualizacją, uruchomić aktualizację, porównać wartości po aktualizacji i zgłosić błąd, jeśli nie otrzymasz oczekiwanych wyników. |
| Liczba wierszy | Niepowodzenie, jeśli zestaw wyników nie zawiera oczekiwanej liczby wierszy. |
| Wartość skalarna | Niepowodzenie, jeśli określona wartość w zestawie wyników nie jest równa określonej wartości. Domyślna oczekiwana wartość ma wartość null. |
Warunek testu czasu wykonania określa limit czasu, w którym należy uruchomić skrypt testowy Transact-SQL. Jeśli ten limit czasu zostanie przekroczony, test zakończy się niepowodzeniem. Wyniki testu obejmują również statystykę czasu trwania, która różni się od warunku testu czasu wykonania. Statystyka czasu trwania obejmuje nie tylko czas wykonywania, ale także czas łączenia się z bazą danych dwa razy; czas uruchamiania innych skryptów testowych, takich jak skrypt wstępny i skrypt po przetestowaniu; oraz czas uruchamiania warunków testowych. W związku z tym test może przejść nawet wtedy, gdy jego czas trwania jest dłuższy niż czas wykonywania.
Zgłoszony czas trwania nie obejmuje czasu używanego do generowania danych i wdrażania schematu, ponieważ występują one przed uruchomieniem testów. Aby wyświetlić czas trwania testu, wybierz przebieg testu w oknie Wyniki testu, kliknij prawym przyciskiem myszy i wybierz pozycję Wyświetl szczegóły wyników testu.
Warunki testowe można dodać do testów jednostkowych programu SQL Server przy użyciu okienka Warunki testu w projektancie testów jednostkowych programu SQL Server. Aby uzyskać więcej informacji, zobacz How to: Add Test Conditions to SQL Server Unit Tests (Instrukcje: dodawanie warunków testowych do testów jednostkowych programu SQL Server).
Możesz również edytować kod metody testowej bezpośrednio, aby dodać więcej funkcji. Aby uzyskać więcej informacji, zobacz How to: Open a SQL Server Unit Test to Edit and How to: Write a SQL Server Unit Test that Runs within the Scope of a Single Transaction (Jak otworzyć test jednostkowy programu SQL Server do edycji) i 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). Można na przykład dodać funkcjonalność do metody testowej, dodając instrukcje Assert. Aby uzyskać więcej informacji, zobacz Use Transact-SQL assertions in SQL Server unit tests (Używanie asercji Transact-SQL w testach jednostkowych programu SQL Server).
Oczekiwane błędy
Możesz utworzyć testy jednostkowe programu SQL Server, aby przetestować zachowanie, które nie powinno zakończyć się powodzeniem. Te oczekiwane błędy są czasami określane jako testy ujemne. Oto kilka przykładów:
- Sprawdź, czy procedura składowana, która usuwa dane klienta, kończy się niepowodzeniem, jeśli określisz nieprawidłowy identyfikator klienta.
- Sprawdź, czy procedura składowana wypełniająca zamówienie kończy się niepowodzeniem, jeśli zamówienie nigdy nie zostało złożone lub czy zamówienie zostało już wypełnione.
- Sprawdź, czy procedura składowana, która anuluje zamówienie, nie może anulować zakończonych zamówień ani zamówień, które zostały już anulowane.
Można zdefiniować testy jednostkowe programu SQL Server dla procedur składowanych, które zgłaszają oczekiwane wyjątki. Możesz dodać atrybut do metody testu jednostkowego, aby wskazać, które wyjątki lub wyjątki są oczekiwane. Zapobiegasz awarii testu w przypadku wystąpienia wyjątku.
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)]
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 THROW w kodzie bazy danych. Jeśli określisz MatchFirstError = false, wtedy atrybut pasuje do dowolnego z błędów SQL 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.
Określanie sumy kontrolnej danych
Aby wyświetlić projektanta testów jednostkowych programu SQL Server, kliknij dwukrotnie plik kodu źródłowego testu jednostkowego w Eksploratorze rozwiązań.
Po dodaniu warunku testu sumy kontrolnej danych do testu jednostkowego bazy danych należy skonfigurować oczekiwaną sumę kontrolną przy użyciu następującej procedury:
Określanie oczekiwanej sumy kontrolnej
Na liście warunków testowych wybierz warunek testu sumy kontrolnej danych, dla którego chcesz określić sumę kontrolną.
Otwórz okno Właściwości , naciskając F4. Możesz również otworzyć menu Widok i wybrać pozycję Okno właściwości .
(Opcjonalnie) Możesz zmienić właściwość (Name) warunku testowego na bardziej opisową.
We właściwości Konfiguracja wybierz przycisk przeglądaj (...).
Zostanie wyświetlone okno dialogowe Konfiguracja dla elementu TestConditionName .
Określ połączenie z bazą danych, którą chcesz przetestować. Aby uzyskać więcej informacji, zobacz How to: Create a Database Connection (Instrukcje: tworzenie połączenia z bazą danych).
Domyślnie w okienku edycji zostanie wyświetlona treść Transact-SQL testu. W razie potrzeby możesz zmodyfikować kod, aby wygenerować oczekiwane wyniki. Jeśli na przykład test zawiera kod w teście wstępnym, może być konieczne dodanie tego kodu.
Ważne
Jeśli zmodyfikujesz warunek sumy kontrolnej, dla którego wcześniej określono sumę kontrolną, wszelkie zmiany wprowadzone w okienku edycji nie zostaną zapisane. Przed wybraniem pozycji Pobierz należy ponownie wprowadzić te zmiany.
Wybierz Pobierz.
Transact-SQL jest wykonywany względem określonego połączenia z bazą danych, a wyniki zostaną wyświetlone w oknie dialogowym.
Jeśli wyniki pasują do oczekiwanych wyników testu, wybierz przycisk OK. W przeciwnym razie zmodyfikuj treść Transact-SQL i powtórz kroki 6, 7 i 8, aż wyniki będą zgodnie z oczekiwaniami.
Kolumna Value warunku testu wyświetla wartość oczekiwanej sumy kontrolnej.
Określanie oczekiwanego schematu
Po dodaniu oczekiwanego warunku testu schematu do testu jednostkowego programu SQL Server należy skonfigurować oczekiwany schemat przy użyciu następującej procedury:
Określ oczekiwany schemat
Na liście warunków testowych wybierz oczekiwany warunek testu schematu, dla którego chcesz określić schemat.
Otwórz okno Właściwości , naciskając F4. Możesz również otworzyć menu Widok i wybrać okno Właściwości .
(Opcjonalnie) Możesz zmienić właściwość (Name) warunku testowego na bardziej opisową.
We właściwości Konfiguracja wybierz przycisk przeglądaj (...).
Zostanie wyświetlone okno dialogowe Konfiguracja dla elementu TestConditionName .
Określ połączenie z bazą danych, którą chcesz przetestować. Aby uzyskać więcej informacji, zobacz How to: Create a Database Connection (Instrukcje: tworzenie połączenia z bazą danych).
Domyślnie w okienku edycji zostanie wyświetlona treść Transact-SQL testu. W razie potrzeby możesz zmodyfikować kod, aby wygenerować oczekiwane wyniki. Jeśli na przykład test zawiera kod w teście wstępnym, może być konieczne dodanie tego kodu.
Ważne
Jeśli zmodyfikujesz oczekiwany warunek schematu, dla którego wcześniej określono schemat, wszelkie zmiany wprowadzone w okienku edycji nie zostaną zapisane. Przed wybraniem pozycji Pobierz należy ponownie wprowadzić te zmiany.
Wybierz Pobierz.
Transact-SQL jest wykonywany względem określonego połączenia z bazą danych, a wyniki zostaną wyświetlone w oknie dialogowym. Ponieważ weryfikujesz schemat lub kształt zestawu wyników, a nie wartości wyników, nie musisz widzieć żadnych danych w zwróconych wynikach, o ile kolumny będą wyświetlane zgodnie z oczekiwaniami.
Jeśli wyniki pasują do oczekiwanych wyników testu, wybierz przycisk OK. W przeciwnym razie zmodyfikuj treść Transact-SQL i powtórz kroki 6, 7 i 8, aż wyniki będą zgodnie z oczekiwaniami.
Kolumna Wartość warunku testu zawiera informacje o oczekiwanym schemacie. Można na przykład powiedzieć "Oczekiwano: 2 tabele".
Rozszerzalne warunki testu
Oprócz sześciu wstępnie zdefiniowanych warunków testu można napisać własne nowe warunki testowe. Te warunki testowe są wyświetlane w okienku Warunki testu projektanta testów jednostkowych programu SQL Server. Aby uzyskać więcej informacji, zobacz Niestandardowe warunki testowe dla testów jednostkowych programu SQL Server.