Condividi tramite


Testare le app WinUI sviluppate con il Windows App SDK

In questo argomento vengono fornite alcune indicazioni su come testare e convalidare le funzionalità nelle app create con le funzionalità dell'interfaccia utente Windows App SDK usando WinUI 3. Il test è una parte essenziale del processo di sviluppo di app, che consente di rilevare i bug in anticipo, mantenere la qualità del codice e garantire un'esperienza utente affidabile man mano che l'app si evolve. Incorporando unit test nel flusso di lavoro, è possibile effettuare il refactoring del codice, aggiungere nuove funzionalità e spedire gli aggiornamenti sapendo che le funzionalità esistenti continuano a funzionare come previsto.

Esercitazione: Creare un progetto di unit test winUI 3.

La maggior parte dei tipi di oggetto negli spazi dei nomi Microsoft.UI.Xaml deve essere usata da un thread dell'interfaccia utente in un processo dell'applicazione XAML. Per informazioni dettagliate sui test delle app create con Windows App SDK che non usano WinUI 3, vedere la sezione seguente Testing delle funzionalità non WinUI.

Annotazioni

È consigliabile effettuare il refactoring di qualsiasi codice da testare estrarlo dal progetto principale dell'app e inserirlo in un progetto di libreria. Sia il progetto dell'app che il progetto di unit test possono quindi fare riferimento a tale progetto di libreria. Questa sezione descrive come creare unit test per le app WinUI 3 in Visual Studio usando i modelli di progetto unit test predefiniti.

Annotazioni

L'app di unit test descritta di seguito è scritta nel contesto di un'applicazione WinUI 3. Questa operazione è necessaria per tutti i test che eseguono codice che richiedono il runtime XAML. Questo progetto creerà un thread dell'interfaccia utente XAML ed eseguirà i test.

In questa esercitazione apprenderai a:

  • Creare un progetto WinUI Unit Test App in Visual Studio.
  • Usare Visual Studio Test Explorer.
  • Aggiungere un progetto libreria di classi WinUI per il test.
  • Esegui i test con l'Esplora test di Visual Studio.

Prerequisiti

È necessario avere Visual Studio installato e configurato per lo sviluppo winUI. Vedi Avvio rapido: Configurare l'ambiente e creare un progetto WinUI 3.

Creare un progetto di app per unit test WinUI

Per iniziare, creare un progetto di unit test. Il tipo di progetto include tutti i file modello necessari.

  1. Aprire Visual Studio e selezionare Crea un nuovo progetto nella finestra Start.

    Screenshot della finestra iniziale Visual Studio.

  2. Nella finestra Creare un nuovo progetto filtrare i progetti per C#, Windows e WinUI, selezionare il modello WinUI Unit Test App e quindi selezionare Next

    Screenshot Visual Studio della finestra

  3. [Facoltativo] Nella finestra Configura nuovo progetto, modificare il Nome progetto, il Nome soluzione (deselezionare Metti soluzione e progetto nella stessa directory) e la Posizione del progetto.

  4. Fare clic su Crea.

Eseguire i test con Esplora Test

Quando si crea il progetto di test, i test vengono visualizzati in Esplora test, che viene usato per eseguire gli unit test. È anche possibile raggruppare i test in categorie, filtrare l'elenco di test, creare, salvare ed eseguire playlist di test, eseguire il debug di unit test e ,in Visual Studio Enterprise, analizzare il code coverage.

Il file UnitTests.cs contiene il codice sorgente per gli unit test usati da Esplora test. Per impostazione predefinita, i test di esempio di base illustrati di seguito vengono creati automaticamente:

namespace WinUITest1
{
   [TestClass]
   public class UnitTest1
   {
      [TestMethod]
      public void TestMethod1()
      {
         Assert.AreEqual(0, 0);
      }

      // Use the UITestMethod attribute for tests that need to run on the UI thread.
      [UITestMethod]
      public void TestMethod2()
      {
         var grid = new Grid();
         Assert.AreEqual(0, grid.MinWidth);
      }
   }
}
  1. Se non è già stato fatto, generare la soluzione. Ciò consentirà Visual Studio di "individuare" tutti i test disponibili.

  2. Aprire Esplora test. Se non è visibile, aprire il menu Test, quindi selezionare Esplora test (oppure premere Ctrl + E, T).

    Screenshot del menu Test in Visual Studio.

  3. Visualizza i test. Nella finestra Esplora test, espandere tutti i nodi (a questo punto saranno presenti solo i test di esempio).

    Screenshot della finestra Esplora test in Visual Studio che mostra i test di esempio predefiniti.

  4. Esecuzione dei test.

    • Fare clic con il pulsante destro del mouse sui singoli nodi di test e selezionare Esegui.
    • Selezionare un test e premere il pulsante Riproduci oppure premere CTRL+R, T.
    • Premere il pulsante Esegui tutti i test nella visualizzazione o premere CTRL+R, V.

    Screenshot della finestra Esplora test in Visual Studio che mostra il menu di scelta rapida del test con il comando Esegui evidenziato.

  5. Esaminare i risultati. Al termine dei test, i risultati vengono visualizzati nella finestra Esplora test.

    Screenshot della finestra Esplora test in Visual Studio che mostra i risultati dell'esecuzione del test.

Aggiungere un progetto libreria di classi per il test

  1. Aggiungere un nuovo progetto alla soluzione unit test. Nel Solution Explorer fare clic con il pulsante destro del mouse sulla soluzione e selezionare Aggiungi -> Nuovo progetto... .

    Screenshot del menu contestuale della soluzione con Aggiungi/Nuovo Progetto evidenziato in Visual Studio.

  2. Per questo esempio, aggiungere un progetto di libreria di classi WinUI 3. Nella finestra Nuovo progetto filtrare in C#/Windows/WinUI e selezionare Libreria di classiWinUI.

    Screenshot della finestra Nuovo progetto con la libreria di classi WinUI evidenziata in Visual Studio.

  3. Selezionare Avanti e immettere un nome per il progetto (per questo esempio si usa WinUIClassLibrary1) e premere Crea.

    Screenshot del nuovo progetto

  4. Aggiungere un nuovo UserControl al progetto. Nel Solution Explorer fare clic con il pulsante destro del mouse sul progetto libreria di classi WinUI 3 appena aggiunto e selezionare Aggiungi -> Nuovo elemento dal menu di scelta rapida.

    Screenshot del menu di scelta rapida della soluzione con Aggiungi/Nuovo Elemento evidenziato in Visual Studio.

  5. Nella finestra Aggiungi nuovo elemento selezionare il nodo WinUI nell'elenco Elementi installati e quindi scegliere Controllo utente dai risultati. Assegnare al controllo il nome UserControl1.

    Screenshot della finestra Aggiungi nuovo elemento con WinUI\/User Control (WinUI) evidenziato in Visual Studio.

  6. Aprire il file code-behind UserControl1.xaml.cs. Per questo esempio viene aggiunto un nuovo metodo pubblico denominato GetSeven che restituisce semplicemente un numero intero.

    namespace WinUICLassLibrary1
    {
      public sealed partial class UserControll : UserControl
      {
         public UserControl1()
         {
             this.InitializeComponent();
         }
    
         public int GetSeven()
         {
             return 7;
         }
      }
    }
    
  7. Impostare il progetto Libreria di classi WinUI 3 come dipendenza del progetto di unit test per abilitare l'uso di tipi dal progetto di libreria di classi WinUI 3. In Solution Explorer, nel progetto di libreria di classi, fare clic con il pulsante destro del mouse su Dependencies e selezionare Aggiungi riferimento al progetto.

    Screenshot del menu di scelta rapida Dipendenze con Aggiungi riferimento al progetto evidenziato in Visual Studio.

    Selezionare l'elemento WinUIClassLibrary1 dall'elenco Progetti .

    Screenshot della finestra di dialogo Gestione riferimenti con il progetto 'WinUIClassLibrary1' selezionato.

  8. Creare un nuovo metodo di test in UnitTests.cs. Poiché questo test case richiede l'esecuzione di un thread dell'interfaccia utente XAML, contrassegnatelo con l'attributo [UITestMethod] anziché con l'attributo standard [TestMethod].

    [UITestMethod]
    public void TestUserControl1()
    {
       WinUIClassLibrary1.UserControl1 userControl1 = new WinUIClassLibrary1.UserControl1();
       Assert.AreEqual(7, userControl1.GetSeven());
    }
    

    Questo nuovo metodo di test viene ora visualizzato in Esplora test come uno degli unit test.

    Screenshot della finestra Esplora test in Visual Studio che mostra i test di esempio predefiniti con il nuovo unit test.

  9. Esecuzione dei test.

  • Fare clic con il pulsante destro del mouse sul nodo del nuovo test e selezionare Esegui.
  • Selezionare il nuovo test e premere il pulsante Riproduci oppure premere Ctrl + R, T.
  • Premere il pulsante Esegui tutti i test nella visualizzazione o premere CTRL+R, V.

Screenshot della finestra di Test Explorer in Visual Studio che mostra un'esecuzione completata dei test di esempio predefiniti e il nuovo test unitario.

Test delle funzionalità non WinUI

In molti casi, un'app include funzionalità che non dipendono dai tipi Microsoft.UI.Xaml, ma richiede comunque test. Sono disponibili vari strumenti per il test del codice .NET, tra cui MSTest, NUnit e xUnit. Per altri dettagli sui test delle app .NET, vedere Testing in .NET.

In Visual Studio è possibile creare un nuovo progetto per uno di questi strumenti di test facendo clic con il pulsante destro del mouse sulla soluzione in Solution Explorer, selezionando Aggiungi -> Nuovo progetto dal menu di scelta rapida, scegliendo C# dal selettore Tutte le lingue, Windows dal selettore Tutte le lingue, Test dal selettore Tutti i tipi di progetto, e quindi scegliendo lo strumento di test appropriato dall'elenco (MSTest Test Project, NUnit Test Project o xUnit Test Project).

Quando si crea un nuovo progetto MSTest, NUnit o xUnit che fa riferimento a un progetto WinUI 3, è necessario:

  1. Aggiorna TargetFramework nel file .csproj del progetto di test. Questo valore deve corrispondere a TargetFramework nel progetto WinUI 3. Per impostazione predefinita, i progetti MSTest, NUnit e xUnit hanno come destinazione l'intera gamma di piattaforme supportate da .NET, ma un progetto WinUI 3 supporta solo Windows e ha un targetFramework più specifico.

    Ad esempio, se la destinazione è .NET 8, aggiornare TargetFramework del progetto di unit test da <TargetFramework>net8.0</TargetFramework> a <TargetFramework>net8.0-windows10.0.19041.0</TargetFramework>.

  2. Aggiornare RuntimeIdentifiers nel progetto di test.

    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &gt;= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers>

    <RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>

  3. Aggiungere la proprietà seguente al PropertyGroup nel file con estensione csproj del progetto di test per assicurarsi che il test carichi il runtime di Windows App SDK: <WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>

  4. Verificare che il runtime di Windows App SDK sia installato nel computer che esegue il test. Per altre informazioni sulla distribuzione di Windows App SDK, vedere guida alla distribuzione di Windows App SDK per le app dipendenti dal framework confezionate con posizione esterna (o senza pacchetto).

Risorse aggiuntive