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 viene illustrato come usare la funzionalità Genera dall'utilizzo , che supporta lo sviluppo test-first.
Lo sviluppo test-first è un approccio alla progettazione software in cui si scrivono prima unit test in base alle specifiche del prodotto e quindi si scrive il codice sorgente necessario per rendere i test riusciti. Visual Studio supporta lo sviluppo test-first generando nuovi tipi e membri nel codice sorgente quando si fa per la prima volta riferimento ad essi nei test case, prima che siano definiti.
Visual Studio genera i nuovi tipi e membri con interruzioni minime del flusso di lavoro. È possibile creare stub per tipi, metodi, proprietà, campi o costruttori senza lasciare il contesto attuale nel codice. Quando si apre una finestra di dialogo per specificare le opzioni per la generazione del tipo di dati, il controllo torna immediatamente al file aperto corrente quando la finestra di dialogo viene chiusa.
La funzionalità Genera dall'utilizzo può essere usata con framework di test che si integrano con Visual Studio. In questo argomento viene illustrato Microsoft Unit Testing Framework.
Annotazioni
Le istruzioni in questo articolo illustrano la versione più recente dell'esperienza di sviluppo interattiva (IDE) disponibile in Visual Studio. Il computer potrebbe visualizzare nomi o posizioni diversi per alcuni elementi dell'interfaccia utente. È possibile usare una versione diversa di Visual Studio o impostazioni di ambiente diverse. Per altre informazioni, vedere Personalizzare l'IDE.
Creare un progetto libreria di classi Di Windows e un progetto di test
In C# o Visual Basic creare un nuovo progetto libreria di classi Windows . Denominarlo
GFUDemo_VBoGFUDemo_CS, a seconda della lingua in uso.In Esplora soluzioni fare clic con il pulsante destro del mouse sull'icona della soluzione nella parte superiore, scegliere Aggiungi>nuovo progetto.
Creare un nuovo progetto di unit test (.NET Framework).
Aggiungere un riferimento al progetto Libreria di classi
In Esplora soluzioni, nel progetto di unit test fare clic con il pulsante destro del mouse sulla voce Riferimenti e scegliere Aggiungi riferimento.
Nella finestra di dialogo Gestione riferimenti selezionare Progetti e quindi selezionare il progetto libreria di classi.
Scegliere OK per chiudere la finestra di dialogo Gestione riferimenti .
Salva la soluzione. A questo punto è possibile iniziare a scrivere test.
Generare una nuova classe da un test unitario
Il progetto di test contiene un file denominato UnitTest1. Fare doppio clic su questo file in Esplora soluzioni per aprirlo nell'editor di codice. Sono stati generati una classe di test e un metodo di test.
Individuare la dichiarazione per la classe
UnitTest1e rinominarla inAutomobileTest.Annotazioni
IntelliSense offre ora due alternative per il completamento dell'istruzione IntelliSense: modalità di completamento e modalità di suggerimento. Usare la modalità di suggerimento per le situazioni in cui le classi e i membri vengono usati prima di essere definiti. Quando si apre una finestra di IntelliSense , è possibile premere CTRL+ALT+SPAZIO per passare dalla modalità di completamento alla modalità suggerimento. Per altre informazioni, vedere Usare IntelliSense . Modalità suggerimento ti aiuterà a digitare
Automobilenel passaggio successivo.Individuare il
TestMethod1()metodo e rinominarlo inDefaultAutomobileIsInitializedCorrectly(). All'interno di questo metodo creare una nuova istanza di una classe denominataAutomobile, come illustrato negli screenshot seguenti. Viene visualizzata una sottolineatura ondulata, che indica un errore in fase di compilazione, e si accende una lampadina di avviso Azioni rapide nel margine sinistro o direttamente sotto la sottolineatura ondulata se si passa il puntatore del mouse su di essa.
Scegliere o fare clic sulla lampadina Azioni rapide . Verrà visualizzato un messaggio di errore che indica che il tipo
Automobilenon è definito. Vengono presentate anche alcune soluzioni.Fare clic su Genera nuovo tipo per aprire la finestra di dialogo Genera tipo . In questa finestra di dialogo sono disponibili opzioni che includono la generazione del tipo in un progetto diverso.
Nell'elenco Progetto fare clic su GFUDemo_VB o GFUDemo_CS per indicare a Visual Studio di aggiungere il file al progetto di libreria di classi anziché al progetto di test. Se non è già selezionata, scegliere Crea nuovo file e denominarlo Automobile.cs o Automobile.vb.
Fare clic su OK per chiudere la finestra di dialogo e creare il nuovo file.
In Esplora soluzioni esaminare il nodo del progetto GFUDemo_VB o GFUDemo_CS per verificare che il nuovo file Automobile.vb o Automobile.cs sia presente. Nell'editor di codice, il cursore è ancora su
AutomobileTest.DefaultAutomobileIsInitializedCorrectly, permettendoti di continuare a scrivere il tuo test con il minimo disturbo.
Generare uno stub di proprietà
Si supponga che la specifica del prodotto indichi che la Automobile classe ha due proprietà pubbliche denominate Model e TopSpeed. Queste proprietà devono essere inizializzate con i valori predefiniti di "Not specified" e -1 dal costruttore predefinito. Lo unit test seguente verificherà che il costruttore predefinito imposti le proprietà sui valori predefiniti corretti.
Aggiungere la riga di codice seguente al
DefaultAutomobileIsInitializedCorrectlymetodo di test.Poiché il codice fa riferimento a due proprietà non predefinite in
Automobile, viene visualizzata una sottolineatura ondulata sottoModeleTopSpeed. Passare il puntatore del mouseModele scegliere la lampadina di errore Azioni rapide , quindi scegliere Genera proprietà 'Automobile.Model'.Generare uno stub per la proprietà
TopSpeednello stesso modo.AutomobileNella classe i tipi delle nuove proprietà vengono dedotti correttamente dal contesto.
Generare uno stub per un nuovo costruttore
A questo punto, creeremo un metodo di test che genererà uno stub del costruttore per inizializzare le proprietà Model e TopSpeed. Successivamente, si aggiungerà altro codice per completare il test.
Aggiungere il metodo di test aggiuntivo seguente alla
AutomobileTestclasse .Fare clic sulla lampadina di errore Azioni rapide sotto la sottolineatura ondulata rossa e quindi fare clic su Genera costruttore in 'Automobile'.
Nel file della classe
Automobile, si noti che il nuovo costruttore ha esaminato i nomi delle variabili locali usate nella chiamata al costruttore, ed ha trovato le proprietà con gli stessi nomi nella classeAutomobile, e ha fornito codice nel corpo del costruttore per archiviare i valori degli argomenti nelle proprietàModeleTopSpeed.Dopo aver generato il nuovo costruttore, viene visualizzata una sottolineatura ondulata sotto la chiamata al costruttore predefinito in
DefaultAutomobileIsInitializedCorrectly. Il messaggio di errore indica che laAutomobileclasse non ha alcun costruttore che accetta zero argomenti. Per generare un costruttore predefinito esplicito che non dispone di parametri, fare clic sulla lampadina di errore Azioni rapide e quindi fare clic su Genera costruttore in 'Automobile'.
Generare uno stub per un metodo
Si supponga che la specifica indichi che un nuovo Automobile può essere inserito in uno IsRunning stato se le relative Model proprietà e TopSpeed sono impostate su un valore diverso dai valori predefiniti.
Aggiungere le righe seguenti al
AutomobileWithModelNameCanStartmetodo .Fare clic sulla lampadina di errore Azioni rapide per la chiamata al
myAuto.Startmetodo e quindi fare clic su Genera metodo 'Automobile.Start'.Fare clic sulla lampadina Azioni rapide per la
IsRunningproprietà e quindi fare clic su Genera proprietà 'Automobile.IsRunning'.La
Automobileclasse contiene ora un metodo denominatoStart()e una proprietà denominataIsRunning.
Esegui i test
Scegliere Esegui>tutti i test dal menu Test.
Il comando Esegui>tutti i test esegue tutti i test in tutti i framework di test scritti per la soluzione corrente. In questo caso, ci sono due test e entrambi hanno esito negativo, come previsto. Il
DefaultAutomobileIsInitializedCorrectlytest non riesce perché laAssert.IsTruecondizione restituisceFalse. IlAutomobileWithModelNameCanStarttest ha esito negativo perché ilStartmetodo nellaAutomobileclasse genera un'eccezione.La finestra Risultati test è illustrata nella figura seguente.
Nella finestra Risultati dei test, fare doppio clic su ogni riga dei risultati per passare alla posizione del test corrispondente.
Implementare il codice sorgente
Aggiungere il codice seguente al costruttore predefinito in modo che le
Modelproprietà eIsRunningTopSpeedsiano tutte inizializzate nei valori predefiniti corretti di"Not specified",-1eFalse(ofalseper C#).Quando il metodo
Startviene chiamato, il flagIsRunningdeve essere impostato su true solo se le proprietàModeloTopSpeedsono impostate su un valore diverso dal valore predefinito. RimuovereNotImplementedExceptiondal corpo del metodo e aggiungere il codice seguente.
Eseguire di nuovo i test
Scegliere Esegui dal menu Test e quindi fare clic su Tutti i test.
Questa volta i test vengono superati. La finestra Risultati test è illustrata nella figura seguente.
Contenuti correlati
- Generare dall'utilizzo
- Funzionalità dell'editor di codice
- usare IntelliSense
- Testare il codice con unit test
- azioni rapide