Condividi tramite


Unit test per metodi privati, interni e Friend.

In genere, i metodi contrassegnati come privati, interni e Friend non sono visibili all'esterno della classe che li contiene. Tuttavia, gli strumenti di Visual Studio offrono unit test in grado di accedervi anche se il file dello unit test si trova in una classe separata.

Sebbene non sia necessario modificare il file dello unit test per consentirgli l'accesso a tali metodo, esistono alcune opzioni che è possibile scegliere in merito alla modalità di elaborazione dei metodi interni e Friend. Questo articolo illustra tali opzioni e descrive ciò che accade in un progetto quando si testano metodi privati, interni e Friend.

Nota

Per istruzioni su come creare unit test, vedere Creazione ed esecuzione di unit test per il codice esistente.

Nota

L'utilizzo delle funzioni di accesso è stato deprecato in Visual Studio 2010 e non può essere incluso nelle versioni future di Visual Studio.

Metodi privati

Quando si crea uno unit test per un metodo privato, viene aggiunta una cartella Riferimenti test al progetto di test e una funzione di accesso a tale cartella. Alla funzione di accesso viene inoltre fatto riferimento nella logica del metodo dello unit test.

Form1_Accessor target = new Form1_Accessor(); // TODO: Initialize to an appropriate value
Dim target As Form1_Accessor = New Form1_Accessor() ' TODO: Initialize to an appropriate value

Questa funzione di accesso consente allo unit test di chiamare metodi privati nel codice da testare.

È possibile creare manualmente una funzione di accesso o ricrearne una eliminata. A tale scopo, fare clic con il pulsante destro del mouse sul codice da testare, scegliere Crea funzione di accesso privata e selezionare il progetto di test che richiede tale funzione.

Metodi interni e Friend

Quando si crea uno unit test per un metodo interno in C# o per un metodo Friend in Microsoft Visual Basic, viene visualizzata una finestra di dialogo che consente di scegliere tra l'accesso ai metodi interni con la funzione di accesso privata o con InternalsVisibleToAttribute.

Nota

La finestra di dialogo potrebbe non essere visualizzata se l'attributo è già stato aggiunto al progetto.

Se si sceglie di accedere ai metodi interni con InternalsVisibleToAttribute, l'attributo viene aggiunto al file AssemblyInfo.cs. L'attributo rende disponibili al progetto di test i metodi interni del codice da testare. Un nuovo attributo viene aggiunto per ogni progetto di test per il quale si sceglie questa opzione.

Se si sceglie di accedere ai metodi interni con la funzione di accesso privata, si verificherà il medesimo comportamento descritto più indietro in questo articolo per i metodi privati, ovvero verrà aggiunta una cartella Riferimenti test al progetto di test e a tale cartella verrà aggiunta una funzione di accesso alla quale verrà fatto riferimento nella logica del metodo dello unit test. In questo caso, la funzione di accesso privata consente di accedere a metodi privati e interni da testare.

Se si è scelto di aggiungere InternalsVisibleToAttribute al progetto, è comunque possibile creare unit test per i metodi interni e accedervi invece tramite la funzione di accesso privata. Tuttavia, è necessario stabilire questo comportamento quando si crea lo unit test. Nella finestra di dialogo Crea unit test fare clic su Impostazioni. Nella finestra di dialogo Impostazioni di generazione test, deselezionare la casella di controllo Rispetta attributo InternalsVisibleTo.

Vedere anche

Concetti

Composizione di uno unit test

Unit test e C++

Unit test per i metodi generici