Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird die Verwendung der Funktion "Aus Verwendung generieren" veranschaulicht, die die testgetriebene Entwicklung unterstützt.
Die erste Testentwicklung ist ein Ansatz für das Softwaredesign, bei dem Sie zunächst Komponententests basierend auf Produktspezifikationen schreiben und dann den Quellcode schreiben, der erforderlich ist, um die Tests erfolgreich zu machen. Visual Studio unterstützt die erste Testentwicklung, indem neue Typen und Member im Quellcode generiert werden, wenn Sie sie zuerst in Ihren Testfällen referenzieren, bevor sie definiert werden.
Visual Studio generiert die neuen Typen und Mitglieder mit minimaler Unterbrechung Ihres Workflows. Sie können Stubs für Typen, Methoden, Eigenschaften, Felder oder Konstruktoren erstellen, ohne die aktuelle Position im Code zu verlassen. Wenn Sie ein Dialogfeld öffnen, um Optionen für die Typgenerierung anzugeben, kehrt der Fokus sofort zur aktuellen geöffneten Datei zurück, wenn das Dialogfeld geschlossen wird.
Das Feature „Aus Verwendung generieren“ kann mit Testframeworks verwendet werden, die in Visual Studio integriert sind. In diesem Thema wird das Microsoft Unit Testing Framework veranschaulicht.
Hinweis
Die Anleitungen in diesem Artikel veranschaulichen die neueste Version der interaktiven Entwicklungsumgebung (IDE), die in Visual Studio verfügbar ist. Auf Ihrem Computer werden möglicherweise andere Namen oder Positionen für einige der Elemente der Benutzeroberfläche angezeigt. Möglicherweise verwenden Sie eine andere Version von Visual Studio oder andere Umgebungseinstellungen. Weitere Informationen finden Sie unter Personalisieren der IDE-.
Erstellen eines Windows-Klassenbibliotheksprojekts und eines Testprojekts
Erstellen Sie in C# oder Visual Basic ein neues Windows-Klassenbibliotheksprojekt . Benennen Sie es
GFUDemo_VBoderGFUDemo_CS, je nachdem, welche Sprache Sie verwenden.Klicken Sie im Projektmappen-Explorer oben mit der rechten Maustaste auf das Projektmappensymbol, und wählen Sie "Neues Projekthinzufügen"> aus.
Erstellen Sie ein neues Unit Test Project (.NET Framework) -Projekt.
Hinzufügen eines Verweises auf das Klassenbibliotheksprojekt
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste unter Ihrem Komponententestprojekt auf den Eintrag Verweise und wählen Sie Verweis hinzufügen aus.
Wählen Sie im Dialogfeld "Verweis-Manager " "Projekte " und dann das Klassenbibliotheksprojekt aus.
Wählen Sie 'OK ' aus, um das Dialogfeld "Verweis-Manager " zu schließen.
Speichern Sie Ihre Lösung. Sie können jetzt mit dem Schreiben von Tests beginnen.
Generieren einer neuen Klasse aus einem Komponententest
Das Testprojekt enthält eine Datei mit dem Namen UnitTest1. Doppelklicken Sie im Projektmappen-Explorer auf diese Datei, um sie im Code-Editor zu öffnen. Es wurde eine Testklasse und eine Testmethode generiert.
Suchen Sie die Deklaration für die Klasse
UnitTest1und benennen Sie sie inAutomobileTestum.Hinweis
IntelliSense bietet jetzt zwei Alternativen für den Abschluss der IntelliSense-Anweisung: Abschlussmodus und Vorschlagsmodus. Verwenden Sie den Vorschlagsmodus für Situationen, in denen Klassen und Member verwendet werden, bevor sie definiert werden. Wenn ein IntelliSense-Fenster geöffnet ist, können Sie Strg+Alt+Leertaste drücken, um zwischen Abschlussmodus und Vorschlagsmodus zu wechseln. Weitere Informationen finden Sie unter Verwenden von IntelliSense . Der Vorschlagsmodus hilft Ihnen im nächsten Schritt beim Eingeben von
Automobile.Suchen Sie die
TestMethod1()Methode, und benennen Sie sie inDefaultAutomobileIsInitializedCorrectly()um. Erstellen Sie in dieser Methode eine neue Instanz einer Klasse mit dem NamenAutomobile, wie in den folgenden Screenshots gezeigt. Eine wellenförmige Unterstreichung, die auf einen Kompilierzeitfehler hindeutet, und eine Fehlerglühbirne für Schnelle Aktionen werden am linken Rand oder direkt unter der Wellenlinie angezeigt, wenn Sie darauf zeigen.

Klicken Sie auf die Glühbirne Schnellaktionen. Es wird eine Fehlermeldung angezeigt, die besagt, dass der Typ
Automobilenicht definiert ist. Sie erhalten auch einige Lösungen vorgestellt.Klicken Sie auf " Neuen Typ generieren", um das Dialogfeld " Typ generieren " zu öffnen. Dieses Dialogfeld enthält Optionen, die das Generieren des Typs in einem anderen Projekt umfassen.
Klicken Sie in der Projektliste auf GFUDemo_VB oder GFUDemo_CS , Visual Studio anzuweisen, die Datei dem Klassenbibliotheksprojekt anstelle des Testprojekts hinzuzufügen. Wenn sie noch nicht ausgewählt ist, wählen Sie "Neue Datei erstellen" aus, und nennen Sie sie Automobile.cs oder Automobile.vb.

Klicken Sie auf 'OK ', um das Dialogfeld zu schließen und die neue Datei zu erstellen.
Suchen Sie im Projektmappen-Explorer unter dem Projektknoten GFUDemo_VB oder GFUDemo_CS , um zu überprüfen, ob die neue Automobile.vb oder Automobile.cs Datei vorhanden ist. Im Code-Editor befindet sich der Fokus immer noch auf
AutomobileTest.DefaultAutomobileIsInitializedCorrectly, was es Ihnen ermöglicht, Ihren Test mit minimaler Unterbrechung fortzusetzen.
Generieren eines Eigenschaftenstubs
Gehen Sie davon aus, dass die Produktspezifikation angibt, dass die Klasse Automobile zwei öffentliche Eigenschaften mit den Namen Model und TopSpeed hat. Diese Eigenschaften müssen mit Standardwerten "Not specified" und -1 vom Standardkonstruktor initialisiert werden. Der folgende Komponententest überprüft, ob der Standardkonstruktor die Eigenschaften auf die richtigen Standardwerte festlegt.
Fügen Sie der Testmethode die folgende Codezeile hinzu
DefaultAutomobileIsInitializedCorrectly.Da der Code auf zwei nicht definierte Eigenschaften in
Automobileverweist, wird unterModelundTopSpeedeine wellenförmige Unterstreichung angezeigt. Zeigen Sie aufModel, klicken Sie auf die Fehlerglühbirne Schnellaktionen, und wählen Sie dann Eigenschaft „Automobile.Model“ generieren aus.Generieren Sie einen Eigenschaftsstub für die
TopSpeedEigenschaft auf die gleiche Weise.In der
AutomobileKlasse werden die Typen der neuen Eigenschaften ordnungsgemäß aus dem Kontext abgeleitet.
Generieren eines Stubs für einen neuen Konstruktor
Jetzt erstellen wir eine Testmethode, die einen Konstruktor-Stub generiert, um die Model und TopSpeed Eigenschaften zu initialisieren. Später fügen Sie weiteren Code hinzu, um den Test abzuschließen.
Fügen Sie der Klasse die folgende zusätzliche Testmethode hinzu
AutomobileTest.Klicken Sie unterhalb der roten Wellenlinie auf die Fehlerglühbirne Schnellaktionen, und klicken Sie anschließend auf Generate constructor in 'Automobile' (Konstruktor in „Automobile“ generieren).
Beachten Sie in der
AutomobileKlassendatei, dass der neue Konstruktor die Namen der lokalen Variablen untersucht hat, die im Konstruktoraufruf verwendet werden, Eigenschaften mit den gleichen Namen in derAutomobileKlasse gefunden und Code im Konstruktortext bereitgestellt wurde, um die Argumentwerte in denModelundTopSpeedEigenschaften zu speichern.Nachdem Sie den neuen Konstruktor generiert haben, wird eine wellenförmige Unterstreichung unter dem Aufruf des Standardkonstruktors in
DefaultAutomobileIsInitializedCorrectlyangezeigt. Die Fehlermeldung gibt an, dass dieAutomobileKlasse keinen Konstruktor ohne Null Argumente hat. Um einen expliziten Standardkonstruktor zu generieren, der keine Parameter enthält, klicken Sie auf das „Quick Actions“ Fehler-Glühbirnensymbol und dann auf „Konstruktor in 'Automobile' generieren“.
Generieren eines Stubs für eine Methode
Angenommen, die Spezifikation gibt an, dass ein neues Automobile in einen IsRunning Zustand versetzt werden kann, wenn die zugehörigen Model und TopSpeed Eigenschaften auf einen anderen Wert als die Standardwerte festgelegt sind.
Fügen Sie die folgenden Zeilen zur Methode
AutomobileWithModelNameCanStarthinzu.Klicken Sie auf die Fehlerglühbirne Schnellaktionen für den Methodenaufruf
myAuto.Startund dann auf Methode „Automobile.Start“ generieren.Klicken Sie auf die Glühbirne Schnellaktionen für die
IsRunning-Eigenschaft und dann auf Generate method 'Automobile.Start' (Methode „Automobile.Start“ generieren).Die
AutomobileKlasse enthält nun eine Methode namensStart()und eine Eigenschaft mit dem NamenIsRunning.
Ausführen der Tests
Wählen Sie im Menü "Test" die Option"Alle Testsausführen>" aus.
Der Befehl"Alle Testsausführen>" führt alle Tests in allen Testframeworks aus, die für die aktuelle Lösung geschrieben wurden. In diesem Fall gibt es zwei Tests, und beide schlagen wie erwartet fehl. Der
DefaultAutomobileIsInitializedCorrectlyTest schlägt fehl, weil dieAssert.IsTrueBedingungFalsezurückgibt. DerAutomobileWithModelNameCanStartTest schlägt fehl, da dieStartMethode in derAutomobileKlasse eine Ausnahme auslöst.Das Fenster " Testergebnisse " wird in der folgenden Abbildung gezeigt.

Doppelklicken Sie im Fenster " Testergebnisse " auf jede Ergebniszeile des Tests, um zur Position der einzelnen Tests zu wechseln.
Implementieren des Quellcodes
Fügen Sie dem Standardkonstruktor den folgenden Code hinzu, sodass die
ModelTopSpeedUnd-EigenschaftenIsRunningalle auf die richtigen Standardwerte von"Not specified",-1undFalse(oderfalsefür C#) initialisiert werden.Wenn die
Start-Methode aufgerufen wird, sollte dasIsRunning-Flag nur dann auf 'true' gesetzt werden, wenn dieModel- oderTopSpeed-Eigenschaften auf einen anderen Wert als ihren Standardwert gesetzt sind. Entfernen Sie dieNotImplementedExceptionaus dem Methodentext, und fügen Sie den folgenden Code hinzu.
Führen Sie die Tests erneut aus
Navigieren Sie im Test-Menü zu Ausführen, und klicken Sie dann auf Alle Tests.
Dieses Mal werden die Tests bestanden. Das Fenster " Testergebnisse " wird in der folgenden Abbildung gezeigt.
