Recherche…


Introduction

Je voudrais vous montrer comment créer des tests unitaires pour Universal Windows 10 Application. Pour tester les applications UWP, nous utiliserons le framework xUnit.net sur lequel vous pouvez en lire plus à partir du lien fourni dans la section Remarques.

Remarques

Vous pouvez en savoir plus sur Framework de xUnit: https://xunit.github.io/docs/getting-started-uwp.html

Configurer l'application de test

Une fois que votre application UWP est prête pour les tests, vous devez ajouter une application de test à votre solution. Pour le faire, cliquez "droit" sur la solution et choisissez "App Test Unitaire (Windows Universel)":

entrer la description de l'image ici

Une fois que vous l'ajoutez à la solution, quelques étapes supplémentaires sont nécessaires pour le configurer. Il vous sera demandé de sélectionner la version de plate-forme cible et minimale:

entrer la description de l'image ici

Une fois que vous les avez sélectionnés, ouvrez le fichier "project.json" et ajoutez les dépendances ci-dessous:

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

Celles-ci sont utilisées pour télécharger et ajouter des packages NuGet xUnit Framework afin de faciliter les tests unitaires pour les applications UWP.

Supprimer la référence appelée «MSTestFramework.Universal»:

entrer la description de l'image ici

Ouvrez maintenant le fichier «UnitTest.cs». Modifiez le pour ressembler à ceci:

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

Il est bon de s'arrêter un instant pour parler un peu des attributs de xUnit:

une. Des tests factuels toujours vrais. Ils testent des conditions invariantes.

b. Théorie - tests qui ne sont valables que pour un ensemble de données particulier.

Maintenant, nous aimerions préparer l'application pour afficher des informations sur les tests, mais pas seulement - il est bon d'avoir un bon moyen de lancer des tests. Pour ce faire, nous devons apporter de petites modifications au fichier "UnitTestApp.xaml". Ouvrez-le et remplacez tout le code par collé ci-dessous:

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

Rappelez-vous que "local" devrait avoir le même nom que votre espace de noms.

Maintenant, ouvrez "UnitTestApp.xaml.cs" et remplacez le code par ci-dessous:

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

C'est tout! Maintenant, reconstruisez le projet et lancez l'application de test. Comme vous pouvez le voir ci-dessous, vous avez accès à tous vos tests, vous pouvez les démarrer et vérifier les résultats:

entrer la description de l'image ici

Connectez l'application de test avec le code de l'application cible

Une fois que votre application de test est prête, vous pouvez la connecter avec le code pour lequel vous souhaitez écrire des tests unitaires.

Vous avez soit le code dans PCL, soit le projet d'application UWP (je suppose que vous avez appliqué le modèle MVVM), il suffit d'ajouter une référence dans le projet d'application de test:

entrer la description de l'image ici

Vous avez maintenant accès à tout votre code à partir de l'application de test. Créez les tests unitaires que vous souhaitez. Utilisez simplement "Facts" ou "Theories".

Se moquer de certaines fonctionnalités

Une fois que vous avez tout préparé pour écrire vos tests unitaires, il convient de mentionner le fait de se moquer. Il existe un nouveau framework appelé "SimpleStubs" qui vous permet de créer des simulations basées sur les interfaces.

Cas simple de la documentation GitHub:

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

Vous pouvez en savoir plus à ce sujet ici: https://github.com/Microsoft/SimpleStubs



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow