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.
IntelliTest untersucht Ihren .NET-Code, um Testdaten und eine Reihe von Komponententests zu generieren. Für jede Anweisung im Code wird eine Testeingabe generiert, die diese Anweisung ausführt. Für jede bedingte Verzweigung im Code wird eine Fallanalyse ausgeführt. Beispielsweise werden if Anweisungen, Behauptungen und alle Vorgänge, die Ausnahmen auslösen können, analysiert. Diese Analyse wird verwendet, um Testdaten für einen parametrisierten Komponententest für jede Ihrer Methoden zu generieren und Komponententests mit hoher Codeabdeckung zu erstellen. Betrachten Sie es als intelligente Fuzz-Tests, die die Eingaben und Testfälle so reduzieren, dass sie alle Logikzweige ausführen und auf Ausnahmen überprüfen.
Wenn Sie IntelliTest ausführen, können Sie leicht erkennen, welche Tests fehlschlagen, und fügen Sie alle erforderlichen Code hinzu, um sie zu beheben. Sie können auswählen, welche der generierten Tests in einem Testprojekt gespeichert werden sollen, um eine Regressionssuite bereitzustellen. Wenn Sie Ihren Code ändern, führen Sie IntelliTest erneut aus, um die generierten Tests mit Ihren Codeänderungen synchron zu halten.
Hinweis
IntelliTest ist in Visual Studio 2026 veraltet. In Visual Studio 2022 wird IntelliTest nur für .NET Framework unterstützt und ist auf Visual Studio Enterprise beschränkt. Die Unterstützung für .NET 6 war nur auf eine Vorschauversion beschränkt.
Hinweis
In Visual Studio 2022 wird IntelliTest nur für .NET Framework unterstützt und ist auf Visual Studio Enterprise beschränkt. Die Unterstützung für .NET 6 war nur auf eine Vorschauversion beschränkt.
Verfügbarkeit und Erweiterungen
Die Befehle " IntelliTest erstellen " und " IntelliTest ausführen ":
Sind nur in der Enterprise Edition von Visual Studio verfügbar.
Unterstützt nur C#-Code, der auf .NET Framework ausgerichtet ist.
Sind erweiterbar und unterstützen Tests im MSTest-, MSTest V2-, NUnit- und xUnit-Format.
X64-Konfiguration nicht unterstützen (erfordert Vorschauversion).
Erkunden: Verwenden von IntelliTest, um Ihren Code zu erkunden und Komponententests zu generieren
Um Komponententests zu generieren, müssen Ihre Typen öffentlich sein.
Öffnen Sie Ihre Projektmappe in Visual Studio, und öffnen Sie dann die Klassendatei mit Methoden, die Sie testen möchten.
Klicken Sie mit der rechten Maustaste auf eine Methode, und wählen Sie "IntelliTest ausführen " aus, um Komponententests für den Code in Ihrer Methode zu generieren.
IntelliTest führt Ihren Code mehrmals mit unterschiedlichen Eingaben aus. Jede Ausführung wird in der Tabelle mit den Eingabetestdaten und der resultierenden Ausgabe oder Ausnahme dargestellt.
Um Komponententests für alle öffentlichen Methoden in einer Klasse zu generieren, klicken Sie einfach mit der rechten Maustaste in die Klasse und nicht auf eine bestimmte Methode, und wählen Sie dann "IntelliTest ausführen" aus. Verwenden Sie die Dropdownliste im Fenster "Explorationsergebnisse ", um die Komponententests und die Eingabedaten für jede Methode in der Klasse anzuzeigen.
Überprüfen Sie bei bestandenen Tests, ob die gemeldeten Ergebnisse in der Ergebnisspalte Ihren Erwartungen an Ihren Code entsprechen. Beheben Sie bei Tests, die fehlschlagen, den Code nach Bedarf. Führen Sie dann IntelliTest erneut aus, um die Korrekturen zu überprüfen.
Persist: Speichern der Komponententests als Regressionssuite
Wählen Sie die Datenzeilen aus, die Sie mit dem parametrisierten Komponententest in einem Testprojekt speichern möchten.
Sie können das Testprojekt und den parametrisierten Komponententest anzeigen, der erstellt wurde – die einzelnen Komponententests, die den einzelnen Zeilen entsprechen, werden in der datei .g.cs im Testprojekt gespeichert, und ein parametrisierter Komponententest wird in der entsprechenden .cs Datei gespeichert. Sie können die Komponententests ausführen und die Ergebnisse im Test-Explorer genauso anzeigen wie für alle Komponententests, die Sie manuell erstellt haben.
Alle erforderlichen Verweise werden auch dem Testprojekt hinzugefügt.
Wenn sich der Methodencode ändert, führen Sie IntelliTest erneut aus, um die Komponententests mit den Änderungen synchron zu halten.
Unterstützung: Verwenden von IntelliTest zum Konzentrieren der Codesuche
Wenn Sie komplexeren Code haben, unterstützt IntelliTest Sie bei der gezielten Exploration Ihres Codes. Wenn Sie beispielsweise über eine Methode verfügen, die eine Schnittstelle als Parameter aufweist und mehrere Klassen diese Schnittstelle implementieren, ermittelt IntelliTest diese Klassen und meldet eine Warnung.
Zeigen Sie die Warnungen an, um zu entscheiden, was Sie tun möchten.
Nachdem Sie den Code untersucht und verstehen, was Sie testen möchten, können Sie die Warnung beheben, um auszuwählen, welche Klassen zum Testen der Schnittstelle verwendet werden sollen.
Diese Auswahl wird der datei PexAssemblyInfo.cs hinzugefügt.
[assembly: PexUseType(typeof(Camera))]Jetzt können Sie IntelliTest erneut ausführen, um einen parametrisierten Komponententest und Testdaten nur mithilfe der klasse zu generieren, die Sie behoben haben.
Spezifizieren: Verwenden Sie IntelliTest, um die Korrektheitseigenschaften zu validieren, die Sie im Code spezifizieren.
Geben Sie die allgemeine Beziehung zwischen Eingaben und Ausgaben an, die von den generierten Komponententests überprüft werden sollen. Diese Spezifikation wird in einer Methode gekapselt, die wie eine Testmethode aussieht, aber universell quantifiziert ist. Dies ist die parametrisierte Unit-Test-Methode, und alle Assertionen, die Sie aufstellen, müssen für alle möglichen Eingabewerte gelten, die IntelliTest generieren kann.
Fragen und Antworten
F: Können Sie IntelliTest für nicht verwalteten Code verwenden?
A: Nein, IntelliTest funktioniert nur mit verwaltetem Code.
F: Wann besteht oder fehlschlägt ein generierter Test?
A: Er wird wie jeder andere Unit-Test bestanden, wenn keine Ausnahmen auftreten. Es schlägt fehl, wenn eine Assertion fehlschlägt oder wenn der im Test ausgeführte Code eine unbehandelte Ausnahme auslöst.
Wenn Sie einen Test haben, der bestehen kann, wenn bestimmte Ausnahmen ausgelöst werden, können Sie eines der folgenden Attribute basierend auf Ihren Anforderungen auf der Testmethode, Testklasse oder Assemblyebene festlegen:
PexAllowedExceptionAttribute
PexAllowedExceptionFromTypeAttribute
PexAllowedExceptionFromTypeUnderTestAttribute
PexAllowedExceptionFromAssemblyAttribute
F: Kann ich dem parametrisierten Komponententest Annahmen hinzufügen?
A: Ja, verwenden Sie Annahmen, um anzugeben, welche Testdaten für den Komponententest für eine bestimmte Methode nicht erforderlich sind. Verwenden Sie die PexAssume Klasse, um Annahmen hinzuzufügen. Sie können beispielsweise eine Annahme hinzufügen, dass die lengths Variable nicht wie folgt null ist:
PexAssume.IsNotNull(lengths);
Wenn Sie eine Annahme hinzufügen und IntelliTest erneut ausführen, werden die nicht mehr relevanten Testdaten entfernt.
F: Kann ich assertionen zum parametrisierten Komponententest hinzufügen?
A: Ja, IntelliTest überprüft, ob Ihre Behauptung tatsächlich korrekt ist, wenn die Unit-Tests ausgeführt werden. Verwenden Sie die PexAssert Klasse oder die Assertions-API, die im Testframework enthalten ist, um Assertionen hinzuzufügen. Sie können beispielsweise eine Assertion hinzufügen, dass zwei Variablen gleich sind.
PexAssert.AreEqual(a, b);
Wenn Sie eine Assertion hinzufügen und IntelliTest erneut ausführen, wird überprüft, ob Ihre Assertion gültig ist; schlägt diese Überprüfung fehl, schlägt der Test ebenfalls fehl.
F: Kann ich parametrisierte Komponententests generieren, ohne IntelliTest zuerst auszuführen?
A: Ja, klicken Sie mit der rechten Maustaste in die Klasse oder Methode, dann wählen Sie die Option "IntelliTest erstellen" aus.
Übernehmen Sie das Standardformat, um Ihre Tests zu generieren, oder ändern Sie, wie Ihr Projekt und Ihre Tests benannt werden. Sie können ein neues Testprojekt erstellen oder Ihre Tests in einem vorhandenen Projekt speichern.
F: Kann ich andere Komponententestframeworks mit IntelliTest verwenden?
A: Ja, führen Sie die folgenden Schritte aus, um andere Frameworks zu suchen und zu installieren. Testframeworkerweiterungen sind auch in Visual Studio Marketplace verfügbar, z. B. NUnit Test Generator.
Nachdem Sie Visual Studio neu gestartet und die Projektmappe erneut geöffnet haben, klicken Sie mit der rechten Maustaste in die Klasse oder Methode, und wählen Sie dann "IntelliTest erstellen" aus. Wählen Sie hier Ihr installiertes Framework aus:
Führen Sie dann IntelliTest aus, um einzelne Komponententests in den entsprechenden .g.cs Dateien zu generieren.
F: Kann ich mehr darüber erfahren, wie die Tests generiert werden?
A: Ja, um einen allgemeinen Überblick zu erhalten, lesen Sie diesen Blogbeitrag.