- Learn
- Guida Visual Studio 2010
- Testare metodi privati
Testare metodi privati
Sebbene i test effettuati invocando i metodi privati di una classe non siano una pratica suggerita, talvolta questa pratica risparmia molto tempo e rende i test più semplici da leggere. Anche in questo caso esistono ferventi battaglie ideologiche tra chi è convinto che il test di metodi privati sia “il male” e chi dice invece che è una pratica normale. La verità come sempre è nel mezzo, ovvero il test di metodi privati non è consigliato, deve essere il più possibile evitato, ma se in alcuni casi contribuisce a rendere i test più leggibili si può utilizzare senza troppi problemi.
Il test di metodi privati viene effettuato essenzialmente tramite reflection e questa è la prima ragione per cui questa metodologia viene sconsigliata, purtroppo infatti la reflection funziona identificando i membri degli oggetti tramite stringhe, producendo quindi test fragili. Il pericolo più comune è che qualcuno modifichi il nome o i parametri del membro privato; in questo caso la soluzione compila ancora, i test non funzionano più perché il metodo ha cambiato nome, ma ci si accorge di avere “rotto” un test solamente quando lo si esegue.
Visual Studio permette di superare anche questo problema; se durante la creazione dello unit test si sceglie di creare test per membri privati si può notare come lo scheletro di test creato sia leggermente differente da quello standard.
[TestMethod()]
[DeploymentItem("MyMath.dll")]
public void MathPrivateMethodTest()
{
MyMath_Accessor target = new MyMath_Accessor();
double a = 30F;
int expected = 0;
int actual = target.MathPrivateMethod(a);
Assert.AreEqual(expected, actual);
}
In questa situazione invece di accedere all’oggetto MyMath
, Visual Studio ha creato dinamicamente una classe chiamata MyMath_Accessor
che permette di accedere al metodo MyMath.MathPrivateMethod
senza usare direttamente la reflection. Naturalmente l’uso di reflection è stato in questo modo incapsulato all’interno di MyMath_Accessor
, ma si ottiene un duplice vantaggio: in primo luogo quando si scrive il test si ha pieno supporto dell’intellisense e in secondo luogo, cambiando la signature della funzione, il codice dei test non compila più, permettendo l’individuazione dell’errore a compile time.
Se vuoi aggiornamenti su Testare metodi privati inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Luca Filigheddu, Sviluppare app per Blackberry
I linguaggi di programmazione che consentono di realizzare app per BlackberryOS 10