Freigeben über


Skripts in SQL Server-Komponententests

Jeder SQL Server-Unittest enthält eine einzelne Vor-Testaktion, Testaktion und Nach-Testaktion. Jede dieser Aktionen enthält wiederum Folgendes:

  • Ein Transact-SQL Skript, das in einer Datenbank ausgeführt wird.
  • Null oder mehr Testbedingungen, die die von der Skriptausführung zurückgegebenen Ergebnisse auswerten.

Das Transact-SQL-Testskript im Testschritt ist die einzige Komponente, die Sie in jeden SQL Server-Komponententest integrieren müssen. Zusätzlich zum Testskript selbst möchten Sie wahrscheinlich auch Testbedingungen angeben, um zu überprüfen, ob das Testskript den Wert oder den von Ihnen erwarteten Wertesatz zurückgegeben hat. Die Testaktion übt oder ändert ein bestimmtes Objekt in dieser Datenbank und wertet diese Änderung dann aus.

Für jede Testaktion können Sie eine Testvorbereitung und eine Nachtestaktion festlegen. Ähnlich wie bei der Testaktion enthält jede Vor-Test-Aktion und jede Nach-Test-Aktion ein Transact-SQL-Skript und kann null oder mehr Testbedingungen haben. Sie können eine Vorabtestaktion verwenden, um sicherzustellen, dass sich die Datenbank in einem Zustand befindet, der es Ihrer Testaktion ermöglicht, aussagekräftige Ergebnisse auszuführen und zurückzugeben. Sie können beispielsweise eine Vorabtestaktion verwenden, um zu überprüfen, ob eine Tabelle Daten enthält, bevor das Testskript einen Vorgang für diese Daten ausführt.

Nachdem die Vortestaktion die Datenbank vorbereitet hat und die Testaktion aussagekräftige Ergebnisse zurückgibt, kann die Aktion nach dem Test verwendet werden, um die Datenbank in den Zustand zurückzugeben, in dem sie sich befand, bevor die Vortestaktion ausgeführt wurde. Oder in einigen Fällen können Sie die Nachtestaktion verwenden, um die Ergebnisse der Testaktion zu überprüfen. Dies liegt daran, dass die Aktion nach dem Test über größere Datenbankberechtigungen verfügen kann als die Testaktion. Weitere Informationen finden Sie unter Übersicht über Verbindungszeichenfolgen und Berechtigungen.

Zusätzlich zu diesen drei Aktionen gibt es auch zwei Testskripts (als allgemeine Skripts bezeichnet), die vor und nach jeder Ausführung der SQL Server-Komponenten ausgeführt werden. Daher können bis zu fünf Transact-SQL Skripts während der Ausführung eines einzelnen SQL Server-Komponententests ausgeführt werden. Es wird nur das Transact-SQL-Skript benötigt, das in der Testaktion enthalten ist; die allgemeinen Skripte sowie die Skripte für Vorab- und Nachtestaktionen sind optional.

Die folgende Tabelle enthält eine vollständige Liste der Skripts, die jedem SQL Server-Komponententest zugeordnet sind.

Maßnahme Skripttyp Description
TestInitialize Gemeinsames Skript (Initialisierung) (Optional) Dieses Skript geht allen Vorabtests und Testaktionen im Modultest voraus. Das Skript "TestInitialize" wird vor jedem Komponententest in einer bestimmten Testklasse ausgeführt. Dieses Skript wird mithilfe des privilegierten Kontexts ausgeführt.
Vorabtest Testskript (Optional) Dieses Skript ist Teil des Komponententests. Das Skript vor dem Testen wird vor der Testaktion innerhalb eines Komponententests ausgeführt. Dieses Skript wird mithilfe des privilegierten Kontexts ausgeführt.
Test Testskript (Erforderlich) Dieses Skript ist Teil des Komponententests. Dieses Skript kann beispielsweise eine gespeicherte Prozedur ausführen, die Tabellenwerte abruft, einfügt oder aktualisiert. Dieses Skript wird mithilfe des Ausführungskontexts ausgeführt.
Nach dem Testen Testskript (Optional) Dieses Skript ist Teil des Komponententests. Das Skript nach dem Test wird nach einem einzelnen Komponententest ausgeführt. Dieses Skript wird mithilfe des privilegierten Kontexts ausgeführt.
TestCleanup Standardskript (Bereinigung) (Optional) Dieses Skript folgt dem Komponententest. Das Skript TestCleanup wird nach allen Komponententests in einer bestimmten Testklasse ausgeführt. Dieses Skript wird mithilfe des privilegierten Kontexts ausgeführt.

Weitere Informationen zu den verschiedenen Sicherheitskontexten, in denen jedes dieser Skripts ausgeführt wird, finden Sie unter Übersicht über Verbindungszeichenfolgen und Berechtigungen. Sie können auch den Abschnitt "Berechtigungen für SQL Server-Komponententests" in den erforderlichen Berechtigungen für SQL Server Data Tools überprüfen.

Reihenfolge, in der Skripts ausgeführt werden

Es ist wichtig, die Reihenfolge zu verstehen, in der jedes Skript ausgeführt wird. Obwohl Sie diese Reihenfolge nicht ändern können, können Sie entscheiden, welche Skripts Sie ausführen möchten. Die folgende Abbildung enthält die Auswahl von Skripts, die Sie in einer Testausführung verwenden können, die zwei SQL Server-Komponententests enthält, und zeigt die Reihenfolge an, in der sie ausgeführt werden:

Diagramm zweier Datenbankeinheitstests.

Hinweis

Wenn die Bereitstellung des SQL Server-Datenbankprojekts konfiguriert ist, erfolgt dieser Schritt zu Beginn der Testausführung unter der privilegierten Kontextverbindungszeichenfolge. Weitere Informationen finden Sie unter How to: Configure SQL Server unit test execution.

Initialisierungs- und Bereinigungsskripte

Im SQL Server Unit Test Designer werden die Skripts "TestInitialize" und "TestCleanup" als die allgemeinen Skripts bezeichnet. Im vorherigen Beispiel wird davon ausgegangen, dass die beiden Komponententests Teil derselben Testklasse sind. Daher teilen sie dieselben TestInitialize- und TestCleanup-Skripts. Bei allen Komponententests innerhalb einer einzigen Testklasse ist dies immer der Fall. Wenn die Testausführung jedoch Komponententests aus verschiedenen Testklassen enthält, werden die allgemeinen Skripts für die zugeordnete Testklasse vor und nach ausführung des Komponententests ausgeführt.

Wenn Sie Komponententests nur mit dem SQL Server Unit Test Designer schreiben, sind Sie möglicherweise nicht mit dem Konzept einer Testklasse vertraut. Jedes Mal, wenn Sie einen Komponententest erstellen, indem Sie das Menü " Test " öffnen und "Neuer Test" auswählen, generiert SQL Server Data Tools eine Testklasse. Testklassen werden im Projektmappen-Explorer mit dem von Ihnen angegebenen Testnamen angezeigt, gefolgt von einer .cs Oder .vb Erweiterung. Innerhalb jeder Testklasse werden einzelne Komponententests als Testmethoden gespeichert. Unabhängig von der Anzahl der Testmethoden (d. h. Komponententests) kann jede Testklasse jedoch null oder ein TestInitialize- und TestCleanup-Skript aufweisen.

Sie können das Skript TestInitialize verwenden, um die Testdatenbank vorzubereiten, und Sie können das Skript TestCleanup verwenden, um die Testdatenbank in einen bekannten Zustand zurückzugeben. Sie können beispielsweise TestInitialize verwenden, um eine gespeicherte Hilfsprozedur zu erstellen, die Sie später im Testskript ausführen, um eine andere gespeicherte Prozedur zu testen.

Skripts vor dem Testen und nach dem Testen

Die Skripts, die mit Vorabtest- und Nachtestaktionen verknüpft sind, variieren wahrscheinlich von einem Komponententest zum nächsten. Sie können diese Skripts verwenden, um inkrementelle Änderungen an der Datenbank einzurichten und diese Änderungen dann zu bereinigen.