Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
IntelliTest esplora il codice .NET per generare dati di test e una suite di unit test. Per ogni istruzione nel codice, viene generato un input di test che eseguirà tale istruzione. Viene eseguita un'analisi dei casi per ogni ramo condizionale nel codice. Ad esempio, if vengono analizzati elementi come istruzioni, asserzioni e operazioni in grado di generare eccezioni. Questa analisi viene usata per generare dati di test per un unit test parametrizzato per ciascuno dei tuoi metodi, creando unit test con alta copertura del codice. Si consideri un test fuzz intelligente che riduce gli input e i test case a ciò che esegue tutti i rami della logica e verifica la presenza di eccezioni.
Quando si esegue IntelliTest, è possibile vedere facilmente quali test hanno esito negativo e aggiungere qualsiasi codice necessario per correggerli. È possibile selezionare i test generati da salvare in un progetto di test per fornire una suite di regressione. Quando si modifica il codice, eseguire di nuovo IntelliTest per mantenere sincronizzati i test generati con le modifiche al codice.
Annotazioni
IntelliTest è deprecato in Visual Studio 2026. In Visual Studio 2022, IntelliTest è supportato solo per .NET Framework ed è limitato a Visual Studio Enterprise. Il supporto per .NET 6 era limitato solo a una versione di anteprima.
Annotazioni
In Visual Studio 2022, IntelliTest è supportato solo per .NET Framework ed è limitato a Visual Studio Enterprise. Il supporto per .NET 6 era limitato solo a una versione di anteprima.
Disponibilità ed estensioni
I comandi di menu Crea IntelliTest ed Esegui IntelliTest :
Sono disponibili solo in Enterprise Edition di Visual Studio.
Supporta solo il codice C# destinato a .NET Framework.
Sono estendibili e supportano l'emissione di test in formato MSTest, MSTest V2, NUnit e xUnit.
Non supportare la configurazione x64 (richiede la versione di anteprima).
Esplorare: Usare IntelliTest per esplorare il codice e generare unit test
Per generare unit test, i tipi devono essere pubblici.
Aprire la soluzione in Visual Studio e quindi aprire il file di classe con metodi da testare.
Fare clic con il pulsante destro del mouse su un metodo e scegliere Esegui IntelliTest per generare unit test per il codice nel metodo.
IntelliTest esegue il codice più volte con input diversi. Ogni esecuzione è rappresentata nella tabella che mostra i dati del test di input e l'output o l'eccezione risultante.
Per generare unit test per tutti i metodi pubblici in una classe, è sufficiente fare clic con il pulsante destro del mouse nella classe anziché su un metodo specifico e quindi scegliere Esegui IntelliTest. Usare l'elenco a discesa nella finestra Risultati esplorazione per visualizzare gli unit test e i dati di input per ogni metodo nella classe .
Per i test superati, verificare che i risultati segnalati nella colonna dei risultati corrispondano alle aspettative per il codice. Per i test che hanno esito negativo, correggere il codice in base alle esigenze. Eseguire quindi di nuovo IntelliTest per convalidare le correzioni.
Rendere persistenti: salvare gli unit test come gruppo di regressione
Selezionare le righe di dati da salvare con lo unit test con parametri in un progetto di test.
È possibile visualizzare il progetto di test e lo unit test con parametri creati, ovvero i singoli unit test, corrispondenti a ognuna delle righe, vengono salvati nel file .g.cs nel progetto di test e un unit test con parametri viene salvato nel file di .cs corrispondente. È possibile eseguire gli unit test e visualizzare i risultati da Esplora test esattamente come per tutti gli unit test creati manualmente.
Tutti i riferimenti necessari vengono aggiunti anche al progetto di test.
Se il codice del metodo cambia, eseguire di nuovo IntelliTest per mantenere sincronizzati gli unit test con le modifiche.
Assist: Usare IntelliTest per concentrarsi sull'esplorazione del codice
Se si dispone di codice più complesso, IntelliTest consente di concentrarsi sull'esplorazione del codice. Ad esempio, se si dispone di un metodo con un'interfaccia come parametro e sono presenti più classi che implementano tale interfaccia, IntelliTest individua tali classi e segnala un avviso.
Visualizzare gli avvisi per decidere cosa si vuole fare.
Dopo aver esaminato il codice e aver compreso cosa si vuole testare, è possibile correggere l'avviso per scegliere le classi da usare per testare l'interfaccia.
Questa scelta viene aggiunta nel file di PexAssemblyInfo.cs .
[assembly: PexUseType(typeof(Camera))]È ora possibile rieseguire IntelliTest per generare uno unit test con parametri e testare i dati usando solo la classe corretta.
Specifica: Usare IntelliTest per convalidare le proprietà di correttezza specificate nel codice
Specificare la relazione generale tra input e output da convalidare per gli unit test generati. Questa specifica viene incapsulata in un metodo simile a un metodo di test, ma viene quantificato universalmente. Questo è il metodo di unit test parametrizzato, e le asserzioni che fai devono valere per tutti i possibili valori di input che IntelliTest può generare.
Domande e risposte
D: È possibile usare IntelliTest per il codice non gestito?
Un: No, IntelliTest funziona solo con codice gestito.
D: Quando un test generato automaticamente viene superato o fallisce?
A: Passa come qualsiasi altro unit test se non si verificano eccezioni. Ha esito negativo se un'asserzione ha esito negativo o se il codice sottoposto a test genera un'eccezione non gestita.
Se si dispone di un test che può superare se vengono generate determinate eccezioni, è possibile impostare uno degli attributi seguenti in base ai requisiti a livello di metodo di test, classe di test o assembly:
PexAllowedExceptionAttribute
PexAllowedExceptionFromTypeAttribute
PexAllowedExceptionFromTypeUnderTestAttribute
PexAllowedExceptionFromAssemblyAttribute
D: È possibile aggiungere presupposti allo unit test con parametri?
Un: Sì, usare le ipotesi per specificare quali dati di test non sono necessari per il test unitario di un metodo specifico. Usare la PexAssume classe per aggiungere presupposti. Ad esempio, è possibile aggiungere un presupposto che la lengths variabile non sia null come segue:
PexAssume.IsNotNull(lengths);
Se si aggiunge un presupposto e si esegue di nuovo IntelliTest, i dati di test non più rilevanti verranno rimossi.
D: È possibile aggiungere asserzioni allo unit test con parametri?
R: Sì, IntelliTest controllerà che ciò che stai asserendo nella tua istruzione sia effettivamente corretto quando esegue i test unitari. Usare la PexAssert classe o l'API di asserzione fornita con il framework di test per aggiungere asserzioni. Ad esempio, è possibile aggiungere un'asserzione che due variabili sono uguali.
PexAssert.AreEqual(a, b);
Se si aggiunge un'asserzione e si esegue di nuovo IntelliTest, si verificherà che l'asserzione sia valida e il test ha esito negativo se non lo è.
D: È possibile generare unit test con parametri senza prima eseguire IntelliTest?
Un: Sì, fare clic con il pulsante destro del mouse nella classe o nel metodo, quindi scegliere Crea IntelliTest.
Accettare il formato predefinito per generare i test o modificare la modalità di nome del progetto e dei test. È possibile creare un nuovo progetto di test o salvare i test in un progetto esistente.
D: È possibile usare altri framework di unit test con IntelliTest?
Un: Sì, seguire questa procedura per trovare e installare altri framework. Le estensioni del framework di test sono disponibili anche in Visual Studio Marketplace, ad esempio NUnit Test Generator.
Dopo aver riavviato Visual Studio e riaperto la soluzione, fare clic con il pulsante destro del mouse sulla classe o sul metodo e quindi scegliere Crea IntelliTest. Selezionare il framework installato qui:
Eseguire quindi IntelliTest per generare singoli unit test nei file di .g.cs corrispondenti.
D: È possibile ottenere altre informazioni su come vengono generati i test?
Un: Sì, per una panoramica generale, leggere questo post di blog.