So arbeiten Sie mit dem xUnit.Net-Framework

Ich benutze xUnit schon seit einiger Zeit und es ist mein bevorzugtes Unit-Test-Framework. Es ist ein Open-Source-Unit-Test-Tool für das .NET-Framework, das mit ReSharper, CodeRush, TestDriven.Net und Xamarin kompatibel ist. Sie können xUnit.Net nutzen, um einen Ausnahmetyp einfach zu bestätigen. Sie können auch die Attribute "Fakt" oder "Theorie" in xUnit.Net erweitern und es bietet eine hervorragende Unterstützung für das Schreiben parametrisierter Komponententests. Hier ist der Github-Repository-Link für xUnit.Net.

So arbeiten Sie mit xUnit.net in Visual Studio. Für diese Demonstration verwenden wir Visual Studio 2015, obwohl Sie auch mit anderen kompatiblen Versionen von Visual Studio arbeiten können. Führen Sie nun die folgenden einfachen Schritte aus, um Ihre Umgebung für die Arbeit mit xUnit.Net in Visual Studio einzurichten.

  1. Öffnen Sie Visual Studio 2015 UDE
  2. Erstellen Sie ein neues Projekt vom Typ "Klassenbibliothek".
  3. Speichern Sie das Projekt unter einem Namen
  4. Installieren Sie anschließend xUnit.Net über den NuGet Package Manager

Und das ist es! Um die Komponententests in Visual Studio IDE auszuführen, können Sie xUnit.net Runner für Visual Studio verwenden. Folgendes müssten Sie angeben, um das Paket xUnit.net [Runner: Visual Studio] mithilfe des Package Manager-Konsolenfensters zu installieren:

Install-Package xunit.runner.visualstudio -Version 2.1.0

Dies ist alles, was Sie benötigen, um Ihre Umgebung so einzurichten, dass Sie die xUnit.Net-Komponententests in der Visual Studio-IDE ausführen können.

Fakten und Theorien

Im Gegensatz zu dem bekannten Attribut [Test], mit dem Sie möglicherweise vertraut sind, müssten Sie das Attribut [Fact] verwenden, um Ihre Unit-Test-Methoden mit xUnit.net zu schreiben. Beachten Sie, dass xUnit.net zwei Arten von Komponententests unterstützt: Fakten und Theorien.

Während Fakten zum Testen invarianter Bedingungen verwendet werden, sind Theorien Tests, die für einen bestimmten Datensatz gelten, der als Argument an die Methode übergeben wird. Normalerweise verwenden Sie das Attribut [Fact], um Komponententests ohne Methodenargumente zu schreiben.

Für das Attribut [Theorie] müssen jedoch eine oder mehrere DataAttribute-Instanzen als Methodenargumente übergeben werden. Im Wesentlichen möchten Sie das Attribut [Theorie] zum Schreiben datengesteuerter Komponententests verwenden. Datengesteuerte Komponententests werden mit unterschiedlichen Datensätzen ausgeführt.

Angenommen, xUnit.Net und sein Runner für Visual Studio sind installiert, schreiben wir zunächst einen einfachen Komponententest mit dem Attribut [Fact]. Betrachten Sie die folgende Unit-Test-Methode - wir werden hier das Attribut [Fact] nutzen.

[Fact]

 public void CheckEqualityTest()

  {

     Assert.Equal(10, Sum(5, 5));

  }

Die Summenmethode akzeptiert zwei Ganzzahlen und gibt deren Summe zurück.

  private int Sum(int x, int y)

  {

    return x + y;

  }

Wenn Sie diesen Test ausführen, besteht der Komponententest. Dies können Sie im Test Explorer Windows in Ihrer Visual Studio-IDE sehen. Lassen Sie uns nun untersuchen, wie wir mit Theorien arbeiten können, um datengesteuerte Komponententests durchzuführen.

Das folgende Codefragment zeigt, wie Sie mit datengesteuerten Komponententests mit xUnit.Net arbeiten können.

[Theory, InlineData("This is a data driven test", "data")]

 public void CheckInputTest(string input, string substring)

 {

      Assert.Equal(true, input.Contains(substring));

 }

Siehe das oben angegebene Code-Snippet. Beachten Sie die Verwendung des Attributs [Theorie]. Sofern Ihre Komponententests nicht datengesteuert sind, sollten Sie sich in Ihren Komponententestmethoden für das Attribut [Fakt] entscheiden. Beachten Sie, wie Parameter in der datengesteuerten Unit-Test-Methode CheckInput übergeben wurden. Das InlineData-Attribut stellt die Quellcodedaten bereit. In diesem Beispiel werden die Daten über Inline-Werte an die Unit-Test-Methode übergeben. Sie können auch mehrere InlineData-Attribute haben - Sie müssen sie nur durch ein Komma trennen. So können Sie dies erreichen.

[Theory, InlineData("This is a data driven test", "data"),

            InlineData("This is another set of data for the data driven test", "data")]

        public void CheckInputTest(string input, string substring)

        {

            Assert.Equal(true, input.Contains(substring));

        }

Wenn Sie den obigen datengesteuerten Test ausführen, wird die CheckInputTest-Methode zweimal ausgeführt - einmal für jeden Satz von Eingabedaten.