2013-08-15 22 views
6

Data la seguente classe, come andresti a scrivere un unit test per questo? Ho letto che qualsiasi test che esegue il file IO non è un test unitario, quindi questo è un test di integrazione che deve essere scritto? Sto usando xUnit e MOQ per i test e sono molto nuovo, quindi forse potrei MOQ il file? Non sono sicuro.Come si esegue il test del codice che esegue il file IO?

public class Serializer 
{ 
    public static T LoadFromXmlFile<T>(string path) 
     where T : class 
    { 
     var serializer = new XmlSerializer(typeof(T)); 

     using (var reader = new StreamReader(path)) 
     { 
      return serializer.Deserialize(reader) as T; 
     } 
    } 

    public static void SaveToXmlFile<T>(T instance, string path) 
    { 
     var serializer = new XmlSerializer(typeof(T)); 

     using (var writer = new StreamWriter(path)) 
     { 
      serializer.Serialize(writer, instance); 

      writer.Flush(); 
     } 
    } 
} 
+0

Cosa stai cercando di coprire con il test dell'unità? Qual è un esempio di test che passa/fallisce? –

risposta

6

In situazioni analoghe Ho modificato le firme dei metodi per accettare un TextWriter o stream (a seconda della situazione) e unità testata passando StringWriters o MemoryStreams e confrontando la stringa risultante o byte a un risultato atteso . Da lì è un assunto abbastanza sicuro che un FileWriter o FileStream produrrà lo stesso output in un file assumendo che il percorso sia valido e si disponga delle autorizzazioni necessarie.

1

Probabilmente questo è un esempio di test che non è necessario scrivere.

Ma se si desidera verificare la reale quantità di file. È possibile scrivere un file noto in una posizione specifica e quindi verificare che il file binario in lettura sia lo stesso di un flusso binario pre-inscatolato.

Problemi correlati