Ecco il problema di progettazione del test dell'unità C#:Problema di progettazione dell'unità C#: come ridurre la ridondanza nella scrittura del test unitario?
Ho un test che voglio eseguire su un codice che modifica un file. Il mio test eseguirà il codice che modifica il file, quindi controlla il risultato. Piuttosto diretto finora ...
Il problema è che ho circa 10 file (che presto saranno molti di più) su cui voglio eseguire lo stesso test dell'unità. Non voglio scrivere un nuovo test di unità per ogni file, quando il test stesso è davvero lo stesso.
Potrei scrivere un singolo test che interroga i file nella cartella e quindi esegue la logica di test su ciascun file, ma l'utilizzo di questo metodo segnalerebbe solo un risultato pass/fail per l'intero set di file.
Id mi piace creare una sorta di sistema dinamico in cui ogni file che inserisco in una particolare cartella viene eseguito nonostante questo stesso test di unità. Quindi, se nella cartella sono presenti 25 file, il test viene eseguito 25 volte e le reult del test unità riportano che sono stati eseguiti 25 test e include pass/fail separati per ciascuno.
Qualche idea come o se questo può essere fatto in un test di unità C#? O con un test di Nunit?
Grazie! E spero che questa non sia una domanda doppia. Mi sono guardato intorno, ma non ho trovato nulla.
Alcuni sostengono che un test che coinvolge IO (manipolando il file system in questo caso) non è un test unitario. Un approccio alternativo consiste nel rappresentare le operazioni di I/O come dipendenze iniettabili. Tuttavia, la maggior parte dei tipi di System.IO (e certamente la statica) non si prestano a questo. Un approccio che ho usato è quello di creare assiemi proxy di tipi di inoltro di metodo banali e interfacce corrispondenti. Questo ti permette di lasciare questo strato proxy sottile non testato e il tuo livello logico completamente _unit_ testato. Microsoft Moles lo fa in modo dinamico ma è ancora un WIP. –