Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unit Testing und Mocking mit Microsoft Fakes

Unit Testing und Mocking mit Microsoft Fakes

Mittlerweile sollte das Microsoft Fakes Isolation Framework den meisten Visual Studio Benutzern bekannt sein. Zumindest seit Microsoft Fakes auf die Premium SKU ausgedehnt hat. Diese Session richtet sich an Interessierte, die bisher noch nicht mit einem Mocking Framework gearbeitet haben und vor der Frage stehen, ob sich der Einsatz von Microsoft Fakes lohnt. Anhand einfacher Beispiele soll gezeigt werden, für welche Anwendungsfälle Fakes geeignet ist und wie es dazu direkt aus Visual Studio heraus genutzt werden kann. Im Zusammenhang mit Unit Tests entfaltet es seine volle Wirkung und dabei muss sogar das .NET Framework im Zweifelsfall die Hosen runterlassen.

Avatar for Christian Jacob

Christian Jacob

July 16, 2014
Tweet

More Decks by Christian Jacob

Other Decks in Programming

Transcript

  1. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 4 Fakes makes it

    easier and faster to create well-isolated unit tests when you do have systems that Peter Provost Sr. Program Manager Lead Microsoft Corporation are not necessarily testable. Microsoft Fakes Isolation Framework Mantra
  2. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 5 Zu testende Solution

    Stub Shim Unvollständige Solution Externe Solution IFoo IFoo Microsoft Fakes Isolation Framework Stubs vs. Shims
  3. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 6 Unit Test Abhängigkeit

    Stub Zu testender Code Unit Zu testender Code Unit Test Unit Abhängigkeit Shim Microsoft Fakes Isolation Framework Stubs vs. Shims
  4. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 7 KRITERIUM STUB SHIM

    Maximale Performance  () Abstrakte und virtuelle Methoden  Schnittstellen  Interne Typen   Statische Methoden  Sealed Typen  Private Methoden  Microsoft Fakes Isolation Framework Stubs vs. Shims
  5. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 8 Komposition fördert die

    lose Kopplung und die Testbarkeit eines Systems und ist oft flexibler. Clean Code Developer Roter Grad cleancodedeveloper.de Microsoft Fakes Isolation Framework Mocking via Schnittstellen
  6. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 9 [TestMethod] public void

    GameListNotEmptyTestStubs() { var testfilePath = "GameList.txt"; var content = "Tic Tac Toe"; // Notice, that there is no real file access happening here var fileSystem = new StubIFileSystem() { ReadAllTextString = filename => { return content; } }; bool actual = FileHelper.IsEmpty(fileSystem, testfilePath); Assert.IsFalse(actual); } Microsoft Fakes Isolation Framework Mocking via Schnittstellen: Demo (Stubs)
  7. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 10 [TestMethod] public void

    GetAgeTestShim() { using (ShimsContext.Create()) { ShimDateTime.NowGet = () => new DateTime(2011, 1, 1); // Arrange var birthdate = new DateTime(1993, 1, 1); var expected = 18; // Act var actual = DateTimeHelper.GetAge(birthdate); // Assert Assert.AreEqual(expected, actual); } } Microsoft Fakes Isolation Framework Mocking via Detours: Demo (Shims)
  8. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 11 • Der Umgang

    mit Unit-Testing ist in allen Editionen identisch. • Aber: Fakes gibt es nur mit Visual Studio 2013 Premium* und Visual Studio 2013 Ultimate: * Seit Visual Studio 2012 Update 2 Microsoft Fakes Isolation Framework Verfügbarkeit
  9. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 13  Auch in

    Team Build und in der Cloud Microsoft Fakes Isolation Framework Verfügbarkeit
  10. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 14  Kein Fakes

    in Visual Studio Express  Auf Shims besser verzichten  Code Refactoring und Schnittstellen sind der bessere Weg  Wenn Fakes Moles ersetzt, wo ist dann eigentlich Pex? Microsoft Fakes Isolation Framework A & Q
  11. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 15 Wer sich hier

    aus Versehen verklickt… … kriegt direkt eine zweite Chance! Vote for it  DEMO Wer sich hier aus Versehen verklickt… Microsoft Fakes Isolation Framework Pex Inside http://research.microsoft.com/en-us/projects/codedigger/gettingstarted.aspx
  12. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 16 If you disable

    the Portable Class Library restriction in Code Digger, then you are leaving the area where the Code Digger has been designed for to work. Nikolai Tillmann Microsoft Principle RSDE Microsoft Corporation Microsoft Fakes Isolation Framework Pex Inside
  13. © TOP TECHNOLOGIES CONSULTING GmbH 16.07.2014 17  Fakes referenziert

    Microsoft.QualityTools.Testing.Fakes.dll  Einchecken hilft nicht und resultiert lediglich in einer NotSupportedException bei nicht unterstützten Editionen  Kategorien helfen, um Fakes-Tests auf nicht unterstützen Systemen herauszufiltern  Alternativ: Fakes Tests in eigene Projekte auslagern Microsoft Fakes Isolation Framework Fakes intim im Team
  14. TOP TECHNOLOGIES CONSULTING GmbH Buchenweg 11-13 25479 Ellerau office +49

    (4106) 6288-400 fax +49 (4106) 6288-555 http://www.toptechnologies.de [email protected] GESCHÄFTSFÜHRUNG Michael Hannemann Andreas Lübbers Klaus Timm © TOP TECHNOLOGIES CONSULTING GmbH