Unit-Test-Methoden Mit Datei-IO

Ich versuche, in die Gewohnheit des Schreibens von unit tests, die ich geschrieben habe, ein paar zuvor, aber Sie haben meistens Recht einfach...ich möchte damit beginnen, einen Umzug zu TDD, wie ich will, zu verbessern die Qualität von meinem code (design und Struktur) - reduzierkupplungen, während zur gleichen Zeit hoffentlich reduzieren Sie die Anzahl der Regressionen, die rutschen durch, um eine überprüfbare bauen.

Habe ich ein relativ einfaches Projekt ich arbeiten, um mit zu beginnen. Das resultierende Programm überwacht einen Ordner und wirkt dann auf die Dateien in diesem Ordner.

Hier ist ein typisches Beispiel für code extrahiert aus dem Projekt:

private string RestoreExtension(String file)
    {
        var unknownFile = Path.GetFileName(file);
        var ignoreDir = Path.GetDirectoryName(file) + "\\Unknown";
        string newFile;

        //We need this library for determining mime
        if (CheckLibrary("urlmon.dll"))
        {
            AddLogLine("Attempting to restore file extension");
            var mime = GetMimeType(BufferFile(file, 256));
            var extension = FileExtensions.FindExtension(mime);
            if (!String.IsNullOrEmpty(extension))
            {
                AddLogLine("Found extension: " + extension);
                newFile = file + "." + extension;
                File.Move(file, newFile);
                return newFile;
            }
        }
        else
        {
            AddLogLine("Unable to load urlmon.dll");
        }

        AddLogLine("Unable to restore file extension");

        if (!Directory.Exists(ignoreDir))
        {
            Directory.CreateDirectory(ignoreDir);
        }
        var time = DateTime.Now;
        const string format = "dd-MM-yyyy HH-mm-ss";

        newFile = ignoreDir + "\\" + unknownFile + "-" + time.ToString(format);
        File.Move(file, newFile);

        return String.Empty;
    }

Fragen :

Wie kann ich testen, eine Methode mit IO?
Ich nicht wirklich wollen, um mit einem echten Datei wäre langsam (und eher ein integration-test?), aber ich kann nicht wirklich sehen, einen anderen Weg. Ich könnte hinzufügen, eine schaltbare IO abstraction layer, doch das klingt für mich wie kann es unnötig verkomplizieren code...

Ist so ein Projekt lohnt sich unit-Tests?
Damit meine ich, ist es zu einfach. Sobald Sie den Streifen aus .Netto-und 3rd-party-Bibliothek fordert, da bleibt nicht viel übrig...So ist es ein Fall, dass die Menge an Arbeit, um es überprüfbar bedeutet, es ist nicht ein guter Kandidat, um zu testen?

Viele der Methoden in diesem Projekt sind private, wie dieses Projekt kommt zu einem windows-Dienst. Ich habe gelesen, Sie sollte eigentlich nur testen Methoden, die extern sichtbar (public oder ausgesetzt über eine Schnittstelle), ist es unwahrscheinlich, in diesem Fall jedoch, dass ich Belichten möchte alle meine eigenen Methoden. So ist dieses Projekt im Wert von testing (id-wahrscheinlich benötigen, um entweder zu ändern Methode zugriffsmodifizierer auf public oder fügen Sie einige Attribute, so dass NUnit Sie sehen kann)?

Cheers

ich weiß, das ist alt, aber es ist viel einfacher zu verwenden, Microsoft Fakes

InformationsquelleAutor rupertmulrenan | 2013-05-14

Schreibe einen Kommentar