Codifica degli unit test personalizzati mediante il framework unit test
Il framework unit test supporta l'esecuzione di unit test in Visual Studio. Per la codifica degli unit test, utilizzare le classi e i membri nello spazio dei nomi Microsoft.VisualStudio.TestTools.UnitTesting. Questi elementi devono essere utilizzati quando si scrivono unit test completamente nuovi oppure quando si definiscono unit test generati dal codice sottoposto al test.
Gruppi di elementi
Per fornire una panoramica più accurata del framework unit test, in questa sezione gli elementi dello spazio dei nomi UnitTesting vengono organizzati in gruppi di funzioni correlate.
Nota
Gli elementi dell'attributo, i cui nomi terminano con la stringa Attribute, possono essere utilizzati con o senza la stringa Attribute. Ad esempio, nei due esempi di codice seguenti il funzionamento è identico:
[TestClass()]
[TestClassAttribute()]
Elementi utilizzati per il test basato sui dati
Utilizzare i seguenti elementi per impostare unit test basati sui dati. Per ulteriori informazioni, vedere Procedura: creare uno unit test basato sui dati e Procedura dettagliata: utilizzo di un file di configurazione per definire un'origine dati.
Attributi utilizzati per stabilire un ordine di chiamata
Un elemento di codice decorato con uno dei seguenti attributi viene chiamato al momento specificato. Per ulteriori informazioni, vedere Composizione di uno unit test.
Per gli assembly
AssemblyInitialize e AssemblyCleanup vengono chiamati subito dopo che l'assembly è stato caricato e subito prima che venga scaricato.
Per le classi
ClassInitialize e ClassCleanup vengono chiamati subito dopo che la classe è stata caricata e subito prima che venga scaricata.
Per i metodi di test
Attributi utilizzati per identificare le classi e i metodi di test
Tutte le classi di test devono disporre dell'attributo TestClass e tutti i metodi di test devono disporre dell'attributo TestMethod. Per ulteriori informazioni, vedere Composizione di uno unit test.
Classi Assert ed eccezioni correlate
Gli unit test consentono di verificare il comportamento di specifiche applicazioni grazie all'utilizzo di vari tipi di eccezioni, attributi e istruzioni Assert. Per ulteriori informazioni, vedere Utilizzo di classi Assert.
Classe TestContext
I seguenti attributi e relativi valori vengono visualizzati nella finestra Proprietà di Visual Studio per un determinato metodo di test. Questi attributi non sono stati realizzati per accedere tramite il codice dello unit test. Invece, sono in grado di modificare l'utilizzo o l'esecuzione di unit test tramite l'ambiente IDE di Visual Studio oppure tramite il modulo del test Visual Studio. Ad esempio, alcuni di questi attributi sono visualizzati come colonne nell'Editor elenco dei test e nella finestra Risultati test e possono quindi essere utilizzati per raggruppare e ordinare i test e i relativi risultati. Uno di questi attributi è TestPropertyAttribute, che consente di aggiungere i metadati arbitrari agli unit test. Ad esempio, è possibile utilizzarlo per archiviare il nome dell'esito del test coperto da questo test, contrassegnando lo unit test con [TestProperty("TestPass", "Accessibility")]. In alternativa, è possibile utilizzarlo per archiviare un indicatore di quale tipo di test è: [TestProperty("TestKind", "Localization")]. La proprietà che viene creata utilizzando questo attributo e il valore della proprietà assegnato vengono visualizzati nella finestra Proprietà di Visual Studio sotto l'intestazione Specifico del test.
Classi di configurazione del test
Attributi utilizzati per la generazione di rapporti
Gli attributi in questa sezione consentono di collegare il metodo di test decorato alle entità nella gerarchia del progetto di un progetto team Team Foundation Server.
Classi utilizzate con accessi privati
Come descritto in Utilizzo di Publicize per creare una funzione di accesso privata, è possibile generare uno unit test per un metodo privato. Tale operazione crea una classe di accesso privata che consente di creare istanze di un oggetto della classe PrivateObject. La classe PrivateObject è una classe wrapper in cui la reflection viene utilizzata come parte del processo della funzione di accesso privato. La classe PrivateType è simile, ma viene utilizzata per chiamare i metodi statici privati anziché i metodi di istanza privata.