• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
SharePoint Testing mit Visual Studio 2012
 

SharePoint Testing mit Visual Studio 2012

on

  • 949 views

Session von d

Session von d

Statistics

Views

Total Views
949
Views on SlideShare
408
Embed Views
541

Actions

Likes
0
Downloads
2
Comments
0

2 Embeds 541

http://www.dlindemann.de 540
https://www.google.de 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Bei TDD wird durch ein automatisiertes Stück Code überprüft ob eine oder mehrere Annahmen über eine Methode/Funktion/Klasse logisch korrekt sindTesten von Code ohne Bezug auf Abhängigkeiten wie Datenbanken oder das Dateisystem
  • Stub= einfacheListeodernur TextMock = ErwirdeineBerechnunggemacht; Geprüft ob eine Funktion aufgerufen wurde; Wie ein Spion

SharePoint Testing mit Visual Studio 2012 SharePoint Testing mit Visual Studio 2012 Presentation Transcript

  • Daniel Lindemann | ITaCS GmbH SharePoint Testing mit Visual Studio 2012
  • Agenda Was ist Test-Driven Development? Testing SharePoint Microsoft Fakes Mocking Framework SharePoint Emulators
  • Was ist TDD? Testgetriebene Entwicklung (engl. test first development oder test-driven development (TDD)) ist eine Methode, die häufig bei der agilen Entwicklung von Computerprogrammen eingesetzt wird. Bei der testgetriebenen Entwicklung erstellt der Programmierer Software-Tests konsequent vor den zu testenden Komponenten. Quelle: http://de.wikipedia.org/wiki/Testgetriebene_Entwicklung
  • TDD ist “interpretierbar” Test-First Methode Als Teil eines agilen Softwareentwicklungsprozesses Legacy Code Testing Verhalten von Quellcode überprüfen
  • Warum TDD? Steigerung der Codequalität Bessere Verständnis des Codes Schnelles Finden von Fehlern Pünktlich Feierabend  Hohe Flexibilität
  • Refactor Rot Grün Test-First Methode
  • Agenda Was ist Test-Driven Development? Testing SharePoint Microsoft Fakes Mocking Framework SharePoint Emulators
  • SharePoint testen… aber wie? Quelle: http://blog.mercedes-benz-passion.com/2009/05/hamann-vulcano-slr-im-windkanal/
  • Was ist “testbarer“ Code? Abstraktes und Interface-basiertes Design Kein Konstruktoren mit Logik Methoden standardmäßig als virtual markieren
  • S O L I D Single Responsibility Principle A class should have one, and only one, reason to change. Open Close Principle You should be able to extend a classes behavior, without modifying it. Liskov Substitution Principle Derived classes must be substitutable for their base classes. Interface Segregation Principle Make fine grained interfaces that are client specific. Dependency Inversion Principle Depend on abstractions, not on concretions. Was ist guter Code
  • Stubs und Mocks Stubs • Einfache Objekte z.B. Liste oder nur Text Mocks • Objekte die eine Berechnung vornehmen • Prüfen ob eine Funktion aufgerufen wurde
  • TDD vs. SharePoint SharePoint bietet nur wenige Interfaces und abstrakte Klassen In SharePoint werden viele statische und nicht-virtuelle Funktionen und Eigen- schaften benutzt • SPContext.Current • SPFieldCollection.GetFieldByInternalName
  • Agenda Was ist Test-Driven Development? Testing SharePoint Microsoft Fakes Mocking Framework SharePoint Emulators
  • Fakes (aka Moles) Build-In Visual Studio 2012 Ab Visual Studio Premium Update 2 Faken von sealed, static Methoden und Eigenschaften Benutzen von bekannten Funktionen Anonymous Delegates und Lambda Expressions SharePoint Support
  • Stubs und Shims Stubs StubCustomer() Shims ShimSPList() Stubs Mocks Umleiten von Methodenaufrufen einer bekannten API ShimSPListItem.Update()
  • Faking SPContext ShimSPContext.CurrentGet = () => { return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } }; };
  • Faking SPContext ShimSPContext.CurrentGet = () => { return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } }; };
  • Faking SPContext ShimSPContext.CurrentGet = () => { return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } }; };
  • Faking SPContext ShimSPContext.CurrentGet = () => { return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } }; };
  • demo Website Title Changer WebPart Ein kleiner TDD WebPart
  • Was passiert? Unit Test Komponente Control / Event Receiver / Timer Job / etc. SharePointStub / Shim
  • Erstellen der Fake Assembly
  • Framework-Bedingungen SharePoint 2013 in Fx 4.0 Muss von Hand geändert werden Test-Projekt selbes Fx wie SharePoint- Projekt SharePoint 2010 in Fx 3.5
  • demo Szenario Support-Anfragen Digging Deeper
  • Zusammenfassung Faken von allen Intanzen eines Objekts während eines Tests Benutzen von Stubs und Shims zusammen In die Schreibweise von Stubs und Shims muss man sich einarbeiten
  • Agenda Was ist Test-Driven Development? Testing SharePoint Microsoft Fakes Mocking Framework SharePoint Emulators
  • SharePoint Emulators
  • Funktionen Imitiert SharePoint API SPSite.Open, SPList.Fields.Add, SPListItem[…] Erweiterung von Funktionen mit dynamischem Input durch Shims SPList.GetItems(SPQuery)
  • demo SharePoint Emulators Achtung Nachahmer!
  • What’s next? JavaScript Testing qUnit Code Coverage Visual Studio, DotCover, NCover Build Server Automated Build
  • Tools Visual Studio Unit Test Generator http://bit.ly/13w6xW5
  • Literatur und Links The Art of Unit Testing Buch, Roy Osherove Fakes in der MSDN http://msdn.microsoft.com/en-us/library/hh549175.aspx Visual Studio Test Tooling Guide http://vsartesttoolingguide.codeplex.com Clean Code Buch, Robert C. Martin
  • Blog: http://www.dlindemann.de/blog Email: daniel.lindemann@itacs.de Community: http://www.brandmysharepoint.de Daniel Lindemann ITaCS GmbH Twitter: @DanielLindemann