Ricerca…


introduzione

Vorrei mostrarvi come creare Test unitari per l'applicazione universale Windows 10. Per testare le app UWP useremo xUnit.net Framework su cui puoi leggere di più dal link che ho fornito nella sezione commenti.

Osservazioni

Puoi leggere ulteriori informazioni su xUnit Framewwork: https://xunit.github.io/docs/getting-started-uwp.html

Configura applicazione di test

Una volta che l'applicazione UWP è pronta per i test, è necessario aggiungere un'applicazione di test alla soluzione. Per farlo "giusto" clicca sulla soluzione e scegli "Unit Test App (Universal Windows)":

inserisci la descrizione dell'immagine qui

Una volta aggiunto alla soluzione, sono necessari pochi passaggi per configurarlo. Ti verrà chiesto di selezionare la versione della piattaforma target e minima:

inserisci la descrizione dell'immagine qui

Una volta selezionati, apri il file "project.json" e aggiungi le dipendenze sottostanti:

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

Questi sono usati per scaricare e aggiungere i pacchetti NuGet xUnit Framework per rendere i test unitari facili per l'applicazione UWP.

Rimuovi il riferimento denominato "MSTestFramework.Universal":

inserisci la descrizione dell'immagine qui

Ora apri il file "UnitTest.cs". Modificalo per apparire come di seguito:

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

È bello fermarsi qui per un momento per parlare un po 'degli attributi di xUnit:

un. Prove di fatti che sono sempre vere. Testano le condizioni invarianti.

b. Teoria - test che sono veri solo per un particolare insieme di dati.

Ora vorremmo preparare l'app per visualizzare le informazioni sui test, ma non solo: è bello avere un buon modo per iniziare i test. Per riuscirci, dobbiamo apportare piccole modifiche al file "UnitTestApp.xaml". Aprilo e sostituisci tutto il codice con incollato di seguito:

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

Ricorda che "locale" dovrebbe avere lo stesso nome del tuo spazio dei nomi.

Ora apri "UnitTestApp.xaml.cs" e sostituisci il codice con sotto:

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

Questo è tutto! Ora ricostruire il progetto e avviare l'applicazione di test. Come puoi vedere di seguito puoi accedere a tutti i tuoi test, puoi avviarli e verificare i risultati:

inserisci la descrizione dell'immagine qui

Connetti l'applicazione di prova con il codice dell'app di destinazione

Una volta che l'applicazione di prova è pronta, è possibile connetterla con il codice per il quale si desidera scrivere test unitari.

O avete il vostro codice in PCL, o nel progetto app UWP (presumo che avete applicato il pattern MVVM) aggiungete semplicemente un riferimento ad esso nel progetto Test Application:

inserisci la descrizione dell'immagine qui

Ora hai accesso a tutto il tuo codice da Test Application. Crea test di unità che desideri. Basta usare "fatti" o "teorie".

Mock alcune funzionalità

Una volta che hai preparato tutto per scrivere i tuoi Test unitari, vale la pena parlare di derisione. Esiste un nuovo framework chiamato "SimpleStubs" che consente di creare mock basati sulle interfacce.

Caso semplice dalla documentazione di 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);

Puoi leggere maggiori informazioni qui: https://github.com/Microsoft/SimpleStubs



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow