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)":

ange bildbeskrivning här

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:

ange bildbeskrivning här

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":

ange bildbeskrivning här

Ö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:

ange bildbeskrivning här

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:

ange bildbeskrivning här

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



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow