Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Aprire Visual Studio e selezionare Crea un nuovo progetto nella finestra Start.
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
[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.
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);
}
}
}
Se non è già stato fatto, generare la soluzione. Ciò consentirà Visual Studio di "individuare" tutti i test disponibili.
Aprire Esplora test. Se non è visibile, aprire il menu Test, quindi selezionare Esplora test (oppure premere Ctrl + E, T).
Visualizza i test. Nella finestra Esplora test, espandere tutti i nodi (a questo punto saranno presenti solo i test di esempio).
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.
Esaminare i risultati. Al termine dei test, i risultati vengono visualizzati nella finestra Esplora test.
Aggiungere un progetto libreria di classi per il test
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... .
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.
Selezionare Avanti e immettere un nome per il progetto (per questo esempio si usa
WinUIClassLibrary1) e premere Crea.
Aggiungere un nuovo
UserControlal 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.
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.
Aprire il file code-behind UserControl1.xaml.cs. Per questo esempio viene aggiunto un nuovo metodo pubblico denominato
GetSevenche restituisce semplicemente un numero intero.namespace WinUICLassLibrary1 { public sealed partial class UserControll : UserControl { public UserControl1() { this.InitializeComponent(); } public int GetSeven() { return 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.
Selezionare l'elemento
WinUIClassLibrary1dall'elenco Progetti .
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.
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.
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:
Aggiorna
TargetFrameworknel file .csproj del progetto di test. Questo valore deve corrispondere aTargetFrameworknel 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>.Aggiornare RuntimeIdentifiers nel progetto di test.
<RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-x86;win-x64;win-arm64</RuntimeIdentifiers><RuntimeIdentifiers Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) < 8">win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>Aggiungere la proprietà seguente al
PropertyGroupnel file con estensione csproj del progetto di test per assicurarsi che il test carichi il runtime di Windows App SDK:<WindowsAppSdkBootstrapInitialize>true</WindowsAppSdkBootstrapInitialize>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).