Sagen Sie bitte diese Methode haben alle Namen von Personen aus einer Datei zu holen:
string[] GetNamesFrom(string path) { }
Um diese Methode zu testen, müssten Sie den Pfadnamen einer vorhandenen Datei angeben, für die einige Einstellungen erforderlich sind.
Vergleichen Sie das mit dieser Methode:
string[] GetNamesFrom(IFile file)
Wenn IFile
enthält eine GetContents()
Methode, dann „echte“ Implementierung dieser Schnittstelle kann das Dateisystem zugreifen kann und die Mock-Klasse könnte einfach Ihre Testeingangsdaten zurückkehren .
eine Mock-Bibliothek wie moq Verwendung (http://code.google.com/p/moq/) wird dies ganz einfach:
var fileMock = new Mock<IFile>();
fileMock.Setup(f => f.GetContents()).Returns(testFileContents));
Assert.Equals(expectedNameArray, GetNamesFrom(fileMock.Object));
in das Dateisystem eine Datei Schreiben vor dem Test klingen mag nicht wie eine Menge Setup, aber wenn Sie laufen viel von Tests wird es ein Durcheinander. Durch die Verwendung von Interfaces und Mocking geschieht alles Setup innerhalb Ihrer Testmethode.