Individualschulungen
Entwicklung
Aktuelle Themen
.NET
JavaScript / TypeScript
Java
Programmiersprachen
Entwicklungswerkzeuge
Benutzeroberflächen / User Experience
Softwareengineering
KI in der Softwareentwicklung
Plattformen & Systeme
KI
Web & Cloud
Apps / Mobilplattformen
Datenbanken / Reporting / BI
Betriebssysteme & Virtualisierung
Microsoft Server-Produkte
Scripting
Windows & Office für Anwender
Soft Skills & IT-Recht
Das bieten nur wir
Umfangreicher Themenkatalog
Wählen Sie aus 1055 Themen
Weiterbildungsphilosophie
Individuelle Anpassung an Ihre Anforderungen
Didaktische Konzepte
Ganz nach Ihren Wünschen
Vorteile individueller Firmenseminare
Im Vergleich zu offenen Seminaren
Vor Ort oder online
Alles ist in Ihrem Hause oder online möglich
Top-Trainer
Die besten und renommiertesten Experten
Teilnehmerfeedback
Das sagen 9311 von insgesamt über 75000 Teilnehmern
Referenzkunden
Viele namhafte mittlere und große Referenzkunden
1055 Themen, die frei anpassbar und kombinierbar sind
Gesamter Themenkatalog →
Offene Schulungen
Online-Trainings
.NET-Akademie
.NET/C#-Basisseminar
WPF
WinUI
.NET MAUI, Uno & Avalonia
Blazor
ASP.NET Core WebAPI
Entity Framework Core
Unit Testing / TDD
PowerShell
Alle Seminartermine
INFOTAGE
INFOTAG ".NET 12.0"
am 22.06.2027
INFOTAG "KI" 2027
am 15.09.2027
Das bieten nur wir
Renommierte Top-Trainer
Die besten und bekanntesten Experten schulen Sie!
Teilnehmerfeedback
Das sagen 9311 von insgesamt über 75000 Teilnehmern
Referenzkunden
Viele namhafte mittlere und große Referenzkunden
Nicht das passende Thema dabei? Stellen Sie Ihre individuelle Firmenschulung aus 1055 Modulen zusammen!
Individualschulungen →
Beratung, Support & Entwicklung
Alle unsere Leistungen
Beratung
Beratung zu vielen technischen und methodischen Themen
Coaching
Projektbegleitende Unterstützung
Softwareentwicklung
Wir entwickeln einzelne Module oder ganze Anwendungen für Sie
Technischer Support
Support für einzelne technische Fragen
Individualschulungen
1055 Themen, die frei anpassbar und kombinierbar sind
Offene Seminare
Ausgewählte Themen bieten wir auch als öffentliche Online-Schulungen an.
Beratungsthemen
Anwendungsarchitektur
Datenbankzugriff/Data Access
DevOps
Frontend, GUI, UX
IT-Infrastruktur
Leistung/Performance
Machbarkeit und Prototyping
Methodik, Prozesse, Teamarbeit
Migration und Versionsumstieg
Mobilanwendungen
Reviews und Qualitätssicherung
Sicherheit/Security
Verteilte Systeme und Services
Webtechniken
Werkzeugauswahl
Weitere Themen
Auch alle Schulungsthemen sind als Beratung möglich!
Das bieten nur wir
Renommierte Top-Berater
Durch Vorträge und Veröffentlichungen sehr bekannte Experten
Referenzkunden
Viele namhafte mittlere und große Referenzkunden
Referenzprojekte
Zahlreiche Referenzprojekte
Beratung vor Ort oder remote – flexibel nach Bedarf.
Zu den Beratungsthemen →
Wissen
Publikationen & Vorträge
Fachbücher
Fachartikel
Konferenzvorträge
Weblog
Spickzettel/Cheat Sheets
Lexikon/Glossar
Programmcodebibliothek
Fallbeispiele
Newsletter
Downloads
Themenportale
Übersicht
.NET/C#/Visual Studio
.NET 11.0
.NET 10.0
.NET 9.0
.NET 8.0
ASP.NET (Core)/Blazor
PowerShell
Versionshistorie
Konferenzen/Events
Community-/Leserportal
Suche
Themenkatalog
Tag Cloud
Volltextsuche
Site Map
FAQs
Schulungen, Beratung, Support, Coaching, Softwareentwicklung
Unsere kommerziellen Leistungen →
Über uns
Unternehmen
Zahlen
Selbstdarstellung
Kernkompetenzen
Dr. Holger Schwichtenberg
Unsere Top-Experten
Leitung & Kundenteam
Partner
Weitere Websites
Referenzen
Referenzkunden
Kundenaussagen
Referenzprojekte
Kontakt & Rechtliches
Kontakt
Impressum
Datenschutzerklärung, Haftung, Urheberrecht, Barrierefreiheit
Impressum, Datenschutz und Barrierefreiheit unter Kontakt & Rechtliches.
Rechtliches →
Erklärung des Begriffs: Microsoft Fakes Isolation Framework (Fakes)
Begriff
Microsoft Fakes Isolation Framework
Abkürzung
Fakes
Eintrag zuletzt aktualisiert am
20.05.2019
Zur Stichwortliste unseres Lexikons
Was ist
Microsoft Fakes Isolation Framework
?
Framework für Mocking (Attrappen) für Unit Tests in
Visual Studio 2012
Ein
Mock-Objekt
-Framework dient dazu, Attrappen anstelle realer Objekte in Unit Tests einzusetzen, um Programmteile/
Komponente
n in Isolation zu testen. Microsoft liefert mit Microsoft Fakes Isolation Framework erstmal ein
Mock-Objekt
-Framework mit. Zuvor gab es schon kommerziellen und nicht-kommerzielle Drittanbieter (z.B. nMock, EasyMock.NET, TypeMock Isolator, Rhino Mocks, JustMock). Microsoft selbst hatte einen Vorläufer namens „Moles“ [
research.microsoft.com/en-us/projects/moles/
].
Visual Studio bietet im Ast „References“ für jede eingebundene
Assembly
den Eintrag „Add Fakes
Assembly
“ an. Dieser erzeugt eine neue
Assembly
mit dem Zusatz „.Fakes“, z.B. aus „
System.Data
.Entity“ entsteht „
System.Data
.Entity.Fakes“. In dieser
Assembly
gibt es für jede Klasse eine Attrappen-Klasse, z.B.
System.Data
.Objects.Fakes.ShimObjectContext für
System.Data
.Objects.ObjectContext.
Stub
: Austausch einer Klasse durch eine Attrappe auf Basis einer Schnittstelle
Shim: Umleiten von Code ohne Schnittstelle (Umbiegen per
Interception
mit IL-Code-Generierung zur Laufzeit). Nur in Unit Test-Projekten verfügbar.
Stub
-Attrappen
Die Erstellung von
Stub
-Attrappen setzt voraus, dass die Objekte eine explizite .NET-Schnittstelle besitzen.
Gegeben sei folgender Unit Test:
[TestMethod]
[TestMethod]
public void Test
Buchung
RealesManagerObjekt()
{
int FlugNr = 100;
int PassagierNr = 1;
var fbl = new FlugBLManager();
var bm = new BuchungsManager(fbl);
var buchung = bm.BuchungenErstellen(FlugNr, PassagierNr);
Assert.IsTrue(buchung);
}
Listing: Testcode ohne Attrappe
Die Klasse BuchungsManager verwendet damit intern eine Instanz der Klasse FlugBLManager, um einen Flug zu laden. FlugBLManager implementiert die Schnittstelle IFlugBLManager. BuchungsManager deklariert als Typ nicht die konkrete Klasse FlugBLManager, sondern die Schnittstelle IFlugBLManager.
Public partial class BuchungsManager
{
public IFlugBLManager flugBLManager = new FlugBLManager();
public BuchungsManager(IFlugBLManager flugBLManager)
{
this.flugBLManager = flugBLManager;
}
…
}
Listing: Ausschnitt aus der Implementierung der zu testenden Klasse BuchungsManager
Dadurch kann man anstelle der realen Klasse FlugBLManager nun die von Microsoft Fakes erzeugte Attrappe übergeben. Dieser Attrappe kann der Entwickler per Programmcode mitteilen, wie sie auf Aufrufe reagieren soll. Microsoft Fakes generiert für jedes
Field
,
Property
und
Methode
sowie jeden Konstruktor eine Attrappen-
Methode
. Die Attrappen-
Methode
hat nicht ganz den gleichen Namen. Es wird der
Typname
der Parameter angehängt. Aus GetRoute(string, string) wird so also GetFluegeRouteStringString(string, string). Im folgenden Code wird verhindert, dass der FlugBLManager tatsächlich einen Flug aus der
Datenbank
lädt.
[TestMethod]
public void Test
Buchung
Stub
Objekt()
{
int FlugNr = 100;
int PassagierNr = 1;
//
Stub
erzeugen
var stub = new de.
WWW
ings.GL.Fakes.
Stub
IFlugBLManager();
// Reaktion auf Aufruf von GetFlug() definieren
stub.GetFlug
Int64
= (flugnr) => new Flug() { FlugNr = (int)flugnr };
// Buchungsmanager mit dem
Stub
verbinden
var bm = new BuchungsManager(stub);
var buchung = bm.BuchungenErstellen(FlugNr, PassagierNr);
Assert.IsTrue(buchung);
}
Listing: Testcode unter Verwendung einer
Stub
-Attrappe von Microsoft Fakes
Shim-Attrappen
Shim setzt man immer dann ein, wenn es keine explizite .NET-Schnittstelle gibt. Im folgenden Beispiel wird eine Attrappe für die
Methode
SaveChanges() in der vom
ADO.NET Entity Framework
bereitgestellten Klasse
System.Data
.ObjectContext verwendet. Die Attrappe antwortet immer mit dem Wert „1“ (Anzahl der Änderungen), obwohl niemals wirklich etwas gespeichert wurde. Die Instanziierung eines ShimContext ist notwendig, um den Aufruf zur Laufzeit abzufangen und an die Attrappe zu leiten. Andere
Methode
n, die nicht explizit belegt wurden mit einer Attrappenimplementierung, gehen zum realen Objekt.
[TestMethod]
public void Test
Buchung
Stub
Objekt()
{
int FlugNr = 100;
int PassagierNr = 1;
//
Stub
erzeugen
var stub = new de.
WWW
ings.GL.Fakes.
Stub
IFlugBLManager();
// Reaktion auf Aufruf von GetFlug() definieren
stub.GetFlug
Int64
= (flugnr) => new Flug() { FlugNr = (int)flugnr };
// Buchungsmanager mit dem
Stub
verbinden
var bm = new BuchungsManager(stub);
var buchung = bm.BuchungenErstellen(FlugNr, PassagierNr);
Assert.IsTrue(buchung);
}
Listing: Testcode unter Verwendung einer Shim-Attrappe von Microsoft Fakes
Hinweis: Shims haben einige Vorteile:
Man kann sie auch einsetzen, wenn es keine explizite Schnittstelle gibt.
Man kann auch private Mitglieder aufrufen.
Man kann auch statische Mitglieder aufrufen.
Aber Shims sind langsamer als
Stub
s, weil hier zur Laufzeit der
MSIL
-Code umgeschrieben werden muss.
Querverweise zu anderen Begriffen im Lexikon
ADO.NET Entity Framework (EF)
Visual Studio 2012 (VS2012)
Interception
Mock-Objekt
System.Data
Komponente
Datenbank (DB)
Property
Assembly
Methode
Typname
Field
Int64
Stub
Microsoft Intermediate Language (MSIL)
World Wide Web (WWW)
Beratung & Support
Anfrage für Beratung/Consulting zu MICROSOFT FAKES ISOLATION FRAMEWORK FAKES
Gesamter Beratungsthemenkatalog
Technischer Support zum Thema MICROSOFT FAKES ISOLATION FRAMEWORK FAKES
Schulungen
.NET 4.5-Update - Die Neuerungen in .NET Framework 4.5/4.5.1/4.5.2 und Visual Studio 2012/2013 im Überblick
Unit Testing / Testgetriebene Entwicklung / Test Driven Development (TDD) von .NET-Anwendungen mit C# (oder Visual Basic .NET)
Visual Studio 2012 (Visual Studio 11.0) Update - Die Neuerungen gegenüber Visual Studio 2010
Anfrage für eine individuelle Schulung zum Thema MICROSOFT FAKES ISOLATION FRAMEWORK FAKES
Gesamter Schulungsthemenkatalog
Fachbücher
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr