Zoeken…


Invoering

Ik wil u laten zien hoe u Unit Tests voor Universal Windows 10 Application kunt maken. Om UWP-apps te testen, zullen we xUnit.net Framework gebruiken waarover u meer kunt lezen via de link die ik in de opmerkingen gaf.

Opmerkingen

U kunt meer lezen over xUnit Framewwork: https://xunit.github.io/docs/getting-started-uwp.html

Configureer de testapplicatie

Zodra u uw UWP-applicatie gereed heeft voor tests, moet u een testapplicatie toevoegen aan uw oplossing. Om het "goed" te doen, klik op de oplossing en kies "Unit Test App (Universal Windows)":

voer hier de afbeeldingsbeschrijving in

Nadat u het aan de oplossing hebt toegevoegd, zijn er nog een paar stappen nodig om het te configureren. U wordt gevraagd om de doel- en minimumplatformversie te selecteren:

voer hier de afbeeldingsbeschrijving in

Nadat u ze hebt geselecteerd, opent u het bestand "project.json" en voegt u onderstaande afhankelijkheden toe:

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

Deze worden gebruikt om NuGet xUnit Framework-pakketten te downloaden en toe te voegen om unit-tests eenvoudig te maken voor UWP-toepassingen.

Referentie verwijderen met de naam "MSTestFramework.Universal":

voer hier de afbeeldingsbeschrijving in

Open nu het bestand "UnitTest.cs". Wijzig het als volgt:

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;
        }
     }
   }
}

Het is goed om hier even te stoppen om een beetje te praten over xUnit-kenmerken:

een. Feitentests die altijd waar zijn. Ze testen invariante omstandigheden.

b. Theorie - tests die alleen waar zijn voor een bepaalde set gegevens.

Nu willen we de app voorbereiden om informatie over tests weer te geven, maar niet alleen - het is goed om een goede manier te hebben om tests te starten. Om dat te bereiken moeten we kleine wijzigingen aanbrengen in het bestand "UnitTestApp.xaml". Open het en vervang alle code door hieronder te plakken:

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

Onthoud dat "lokaal" dezelfde naam moet hebben als uw naamruimte.

Open nu "UnitTestApp.xaml.cs" en vervang de code door hieronder:

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

Dat is het! Bouw het project nu opnieuw op en start de testapplicatie. Zoals je hieronder kunt zien, heb je toegang tot al je tests, je kunt ze starten en de resultaten bekijken:

voer hier de afbeeldingsbeschrijving in

Verbind de testapplicatie met de doel-app-code

Zodra uw testapplicatie gereed is, kunt u deze verbinden met de code waarvoor u eenheidstests wilt schrijven.

Ofwel heb je je code in PCL, of in UWP-app-project (ik neem aan dat je het MVVM-patroon hebt toegepast), voeg er gewoon een verwijzing naar toe in het testtoepassingsproject:

voer hier de afbeeldingsbeschrijving in

Nu hebt u toegang tot al uw code van de testapplicatie. Maak eenheidstests die u wilt. Gebruik gewoon "Feiten" of "Theorieën".

Bespot wat functionaliteit

Als je eenmaal alles hebt voorbereid om je Eenheidstests te schrijven, is het de moeite waard om over bespotten te vermelden. Er is een nieuw framework genaamd "SimpleStubs" waarmee u mocks kunt maken op basis van de interfaces.

Eenvoudige case uit GitHub-documentatie:

//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);

Je kunt er hier meer over lezen: https://github.com/Microsoft/SimpleStubs



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow