uwp
Unit Testing für UWP
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)":
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:
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:
Ö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:
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:
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