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_VB
oGFUDemo_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
UnitTest1
e 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
Automobile
nel 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
Automobile
non è 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
DefaultAutomobileIsInitializedCorrectly
metodo di test.Poiché il codice fa riferimento a due proprietà non predefinite in
Automobile
, viene visualizzata una sottolineatura ondulata sottoModel
eTopSpeed
. Passare il puntatore del mouseModel
e scegliere la lampadina di errore Azioni rapide , quindi scegliere Genera proprietà 'Automobile.Model'.Generare uno stub per la proprietà
TopSpeed
nello stesso modo.Automobile
Nella 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
AutomobileTest
classe .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àModel
eTopSpeed
.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 laAutomobile
classe 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
AutomobileWithModelNameCanStart
metodo .Fare clic sulla lampadina di errore Azioni rapide per la chiamata al
myAuto.Start
metodo e quindi fare clic su Genera metodo 'Automobile.Start'.Fare clic sulla lampadina Azioni rapide per la
IsRunning
proprietà e quindi fare clic su Genera proprietà 'Automobile.IsRunning'.La
Automobile
classe 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
DefaultAutomobileIsInitializedCorrectly
test non riesce perché laAssert.IsTrue
condizione restituisceFalse
. IlAutomobileWithModelNameCanStart
test ha esito negativo perché ilStart
metodo nellaAutomobile
classe 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
Model
proprietà eIsRunning
TopSpeed
siano tutte inizializzate nei valori predefiniti corretti di"Not specified"
,-1
eFalse
(ofalse
per C#).Quando il metodo
Start
viene chiamato, il flagIsRunning
deve essere impostato su true solo se le proprietàModel
oTopSpeed
sono impostate su un valore diverso dal valore predefinito. RimuovereNotImplementedException
dal 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