uwp
Enhetstestning för UWP
Sök…
Introduktion
Jag vill visa dig hur du skapar enhetstester för Universal Windows 10-applikation. För att testa UWP-appar kommer vi att använda xUnit.net Framework som du kan läsa mer från länken som jag gav i avsnittet med kommentarer.
Anmärkningar
Du kan läsa mer om xUnit Framewwork: https://xunit.github.io/docs/getting-started-uwp.html
Konfigurera testapplikation
När du har din UWP-applikation redo för tester bör du lägga till testansökan till din lösning. För att göra det "höger" klickar du på lösningen och väljer "Enhetstestapp (Universal Windows)":
När du lägger till den till lösningen finns det några fler steg som krävs för att konfigurera den. Du blir ombedd att välja mål- och minsta plattformsversion:
När du väljer dem öppnar du "project.json" -filen och lägger till beroenden nedan:
"dependencies":
{
"Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0",
"xunit.runner.visualstudio": "2.1.0",
"xunit": "2.1.0",
"xunit.runner.devices": "2.1.0"
}
Dessa används för att ladda ner och lägga till NuGet xUnit Framework-paket för att göra enhetstester enkla för UWP-applikationer.
Ta bort referens som heter "MSTestFramework.Universal":
Öppna nu filen "UnitTest.cs". Ändra det så att det ser ut nedan:
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;
}
}
}
}
Det är bra att stanna här ett ögonblick för att prata lite om xUnit-attribut:
a. Fakta-tester som alltid är sanna. De testar invarianta förhållanden.
b. Teori - tester som endast gäller för en viss uppsättning data.
Nu skulle vi vilja förbereda appen för att visa information om tester men inte bara - det är bra att ha ett bra sätt att starta tester. För att uppnå detta måste vi göra små ändringar i filen "UnitTestApp.xaml". Öppna den och ersätt all kod med klistrat nedan:
<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>
Kom ihåg att "lokalt" bör ha samma namn som ditt namnutrymme.
Öppna nu "UnitTestApp.xaml.cs" och ersätt koden med nedan:
sealed partial class App : RunnerApplication
{
protected override void OnInitializeRunner()
{
AddTestAssembly(GetType().GetTypeInfo().Assembly);
InitializeRunner();
}
partial void InitializeRunner();
}
Det är allt! Bygg nu upp projektet och starta testapplikationen. Som du kan se nedan har du tillgång till alla dina tester, du kan starta dem och kontrollera resultaten:
Anslut testapplikation med mål-appkod
När din testapplikation är klar kan du ansluta den till kod som du vill skriva enhetstester för.
Antingen har du kod i PCL eller i UWP-appprojekt (jag antar att du har använt MVVM-mönster) lägg bara till referens till det i Testapplikationsprojekt:
Nu har du tillgång till all din kod från Testapplikationen. Skapa enhetstester du vill ha. Använd bara "fakta" eller "teorier".
Hånga lite funktionalitet
När du väl har förberett dig för att skriva dina enhetstester är det värt att nämna om hån. Det finns ett nytt ramverk som heter "SimpleStubs" som gör att du kan skapa mocker baserade på gränssnitten.
Enkelt fall från GitHub-dokumentationen:
//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);
Du kan läsa mer om det här: https://github.com/Microsoft/SimpleStubs