Suche…


Einführung

Ich möchte Ihnen zeigen, wie Sie Unit-Tests für die universelle Windows 10-Anwendung erstellen. Um UWP-Apps zu testen, verwenden wir das xUnit.net-Framework, über das Sie mehr über den Link lesen können, den ich in den Anmerkungen angegeben habe.

Bemerkungen

Weitere Informationen zu xUnit Framewwork finden Sie unter https://xunit.github.io/docs/getting-started-uwp.html

Testanwendung konfigurieren

Wenn Sie Ihre UWP-Anwendung für Tests vorbereitet haben, sollten Sie Ihrer Lösung eine Testanwendung hinzufügen. Klicken Sie dazu "rechts" auf die Lösung und wählen Sie "Unit Test App (Universal Windows)":

Geben Sie hier die Bildbeschreibung ein

Nach dem Hinzufügen zur Lösung sind einige weitere Schritte zum Konfigurieren erforderlich. Sie werden aufgefordert, die Ziel- und Mindestversion der Plattform auszuwählen:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie sie ausgewählt haben, öffnen Sie die Datei "project.json" und fügen Sie die folgenden Abhängigkeiten hinzu:

"dependencies": 
 {
  "Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0",
  "xunit.runner.visualstudio": "2.1.0",
  "xunit": "2.1.0",
  "xunit.runner.devices": "2.1.0"
 }

Diese werden zum Herunterladen und Hinzufügen von NuGet xUnit Framework-Paketen verwendet, um Unit-Tests für die UWP-Anwendung zu vereinfachen.

Referenz mit dem Namen "MSTestFramework.Universal" entfernen:

Geben Sie hier die Bildbeschreibung ein

Öffnen Sie nun die Datei "UnitTest.cs". Ändern Sie es wie folgt:

using System;
using Xunit;

namespace UnitTestsForUwp
{
  public class UnitTest1
   {
       [Fact]
       public void TestMethod1()
        {
          Assert.Equal(4, 4);
        }

       [Theory]
       [InlineData(6)]
       public void TestMethod2(int value)
        {
          Assert.True(IsOdd(value));
        }

       bool IsOdd(int value)
        {
          return value % 2 == 1;
        }
     }
   }
}

Es ist gut, hier einen Moment anzuhalten, um ein wenig über die xUnit-Attribute zu sprechen:

ein. Tatsachentests, die immer wahr sind. Sie testen invariante Bedingungen.

b. Theorie - Tests, die nur für einen bestimmten Datensatz gelten.

Jetzt möchten wir die App vorbereiten, um Informationen zu Tests anzuzeigen, aber nicht nur - es ist gut, einen guten Start für Tests zu haben. Um dies zu erreichen, müssen wir kleine Änderungen in der Datei "UnitTestApp.xaml" vornehmen. Öffnen Sie es und ersetzen Sie den gesamten Code durch den folgenden Code:

<ui:RunnerApplication
 x:Class="UnitTestsForUwp.App"
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 xmlns:local="using:UnitTestsForUwp"
 xmlns:ui = "using:Xunit.Runners.UI"
 RequestedTheme="Light">
</ui:RunnerApplication>

Denken Sie daran, dass "local" denselben Namen wie Ihr Namespace haben sollte.

Öffnen Sie nun "UnitTestApp.xaml.cs" und ersetzen Sie den Code durch Folgendes:

sealed partial class App : RunnerApplication
 {
   protected override void OnInitializeRunner()
    {
      AddTestAssembly(GetType().GetTypeInfo().Assembly);
      InitializeRunner();
    }
    partial void InitializeRunner();
  }

Das ist es! Jetzt Projekt neu erstellen und Testanwendung starten. Wie Sie unten sehen können, haben Sie Zugriff auf alle Ihre Tests. Sie können sie starten und die Ergebnisse überprüfen:

Geben Sie hier die Bildbeschreibung ein

Verbinden Sie die Testanwendung mit dem Code der Zielanwendung

Sobald Ihre Testanwendung fertig ist, können Sie sie mit Code verbinden, für den Sie Komponententests schreiben möchten.

Entweder haben Sie Code in PCL oder in einem UWP-App-Projekt (ich nehme an, dass Sie ein MVVM-Muster angewendet haben), fügen Sie einfach einen Verweis darauf in Test Application-Projekt hinzu:

Geben Sie hier die Bildbeschreibung ein

Jetzt haben Sie Zugriff auf den gesamten Code von Test Application. Erstellen Sie Unit-Tests, die Sie möchten. Verwenden Sie einfach "Fakten" oder "Theorien".

Verspotten Sie einige Funktionen

Wenn Sie alles vorbereitet haben, um Ihre Unit-Tests zu schreiben, sollten Sie das Spottmachen erwähnen. Es gibt ein neues Framework namens "SimpleStubs", mit dem Sie Mocks basierend auf den Schnittstellen erstellen können.

Einfacher Fall aus der GitHub-Dokumentation:

//Sample interface:
public interface IPhoneBook
 {
   long GetContactPhoneNumber(string firstName, string lastName);
   long MyNumber { get; set; }
   event EventHandler<long> PhoneNumberChanged;
 }

//Mocked interface:
var stub = new StubIPhoneBook().GetContactPhoneNumber((firstName, lastName) => 6041234567);

Weitere Informationen hierzu finden Sie hier: https://github.com/Microsoft/SimpleStubs



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow