| 

.NET C# Java Javascript Exception

3
Ich habe gehört, das es mit Visual Studio 2011 und .NET 4.5 ein neues Frameworkmit dem Namen Microsoft Fakes Isolation Framework geben soll, das es erlaubt, unter .NET Mocking-Objekte zu erstellen und zu verwalten (noch nicht definierte Objekte, die im Rahmen von tests als Ersatzobjekte fungieren). Gibt es irgendwor bereits Informationen dazu, wie man dieses Framework praktisch nutzt? Hat jemand bereits praktische Erfahrungen damit gesammelt?
News:
03.05.2012
Brandlax 11 2
2 Antworten
1
Hallo,

neu ist eigentlich nur der Name. Bisher lief das Projekt unter dem Namen Moles und war ein Power Tool von Microsoft Research.

http://research.microsoft.com/en-us/projects/moles/

Gruß
Oliver
04.05.2012
1188266612 126 4
0
Ein auch hier auf aktiver codekicker Blogger hat zur Verwendung mit VS11 Beta einen Beitrag verfasst. Das hilft Dir beim Einstieg.
Ich würde es allerdings nicht als Ersatz zu anderen Mocking-Tools wie z.B. RhinoMocks sehen, sondern vielmehr als Ergänzung.
Fakes unterstützt Stubs (Fakes, die nur als Platzhalter dienen und deine Tests nicht fehlschlagen lassen, z.B. um einen bestimmten Rückgabewert in einem Test zu liefern) und Shims ("Umbiegen" statischer Methoden bzw. nicht überlagerbarer Methoden, also "Testing the untestable"). Dabei bietet Fakes, ebenso wie sein "Vorgänger" Moles, die Möglichkeit, statt eines realen Methodenaufrufs ein benutzerdefiniertes Delegate anzugeben, dass anstatt der realen Methode aufgerufen wird.

Beispiel aus der MSDN:
// unit test code
[TestMethod]
public void FileIsNotEmpty() {
//arrange
var file = "MyFile.txt";
var content = "hello world";

// ReadAllText should only be called for "MyFile.txt"
// and always returns "hello world",
var fileSystem = new StubIFileSystem() {
ReadAllTextString = filename => {
return content;
}
};

// act
bool result = FileHelper.IsEmpty(fileSystem, file);

// assert
Assert.IsFalse(result);
}

Mit dieser Funktionalität kann ich mir ein Mock bauen, in dem ich in meinen benutzerdef. Delegates meine Erwartungen überprüfe bzw. erstmal ablege und am Ende des Tests überprüfe.

Genau an dieser Stelle sind aber dann Tools wie RhinoMocks wieder besser aufgestellt. Hier ist es wesentlich einfacher Mocks bzw. Erwartungen zu formulieren.
Ich meine (nur namentlich, keine eigene Erfahrung damit) zwei Tools zu kennen, die alle hier beschriebenen Fähigkeiten haben, zum einen Typemock Isolator und zum anderen Telerik JustMock (beide kostenpflichtig).

Aus diesem Grund würde ich Fakes als zusätzliches Werkzeug sehen und nicht als Ersatz für eine anderes. Gerade in Projekten, die nicht mit UnitTests enstanden sind ist Fakes (insbesondere Shims) enorm hilfreich.
07.05.2012
ffordermaier 8,4k 2 9

Stelle deine .net-Frage jetzt!