sharepoint testing mit visual studio 2012
DESCRIPTION
Session von dTRANSCRIPT
![Page 1: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/1.jpg)
Daniel Lindemann | ITaCS GmbH
SharePoint Testing
mit Visual Studio 2012
![Page 2: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/2.jpg)
Agenda
Was ist Test-Driven Development?
Testing SharePoint
Microsoft Fakes Mocking Framework
SharePoint Emulators
![Page 3: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/3.jpg)
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
![Page 4: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/4.jpg)
TDD ist “interpretierbar”
Test-First MethodeAls Teil eines agilen Softwareentwicklungsprozesses
Legacy Code Testing
Verhalten von Quellcode überprüfen
![Page 5: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/5.jpg)
Warum TDD?
Steigerung der Codequalität
Bessere Verständnis des Codes
Schnelles Finden von Fehlern
Pünktlich Feierabend
Hohe Flexibilität
![Page 6: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/6.jpg)
TDD
Refactor
Rot
Grün
Test-First Methode
![Page 7: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/7.jpg)
Agenda
Was ist Test-Driven Development?
Testing SharePoint
Microsoft Fakes Mocking Framework
SharePoint Emulators
![Page 8: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/8.jpg)
SharePoint testen… aber wie?
Quelle: http://blog.mercedes-benz-passion.com/2009/05/hamann-vulcano-slr-im-windkanal/
![Page 9: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/9.jpg)
Was ist “testbarer“ Code?
Abstraktes und Interface-basiertes Design
Kein Konstruktoren mit Logik
Methoden standardmäßig als virtual markieren
![Page 10: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/10.jpg)
S
O
L
I
D
Single Responsibility PrincipleA class should have one, and only one, reason to change.
Open Close PrincipleYou should be able to extend a classes behavior, without modifying it.
Liskov Substitution PrincipleDerived classes must be substitutable for their base classes.
Interface Segregation PrincipleMake fine grained interfaces that are client specific.
Dependency Inversion PrincipleDepend on abstractions, not on concretions.
Was ist guter Code
![Page 11: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/11.jpg)
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
![Page 12: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/12.jpg)
FAKEITEASY
![Page 13: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/13.jpg)
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
![Page 14: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/14.jpg)
Agenda
Was ist Test-Driven Development?
Testing SharePoint
Microsoft Fakes Mocking Framework
SharePoint Emulators
![Page 15: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/15.jpg)
Fakes (aka Moles)
Build-In Visual Studio 2012Ab Visual Studio Premium Update 2
Faken von sealed, static Methoden und Eigenschaften
Benutzen von bekannten FunktionenAnonymous Delegates und Lambda Expressions
SharePoint Support
![Page 16: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/16.jpg)
Stubs und Shims
StubsStubCustomer()
ShimsShimSPList()
Stubs Mocks
Umleiten von Methodenaufrufen
einer bekannten APIShimSPListItem.Update()
![Page 17: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/17.jpg)
Faking SPContextShimSPContext.CurrentGet = () =>{ return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } };};
![Page 18: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/18.jpg)
Faking SPContextShimSPContext.CurrentGet = () =>{ return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } };};
![Page 19: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/19.jpg)
Faking SPContextShimSPContext.CurrentGet = () =>{ return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } };};
![Page 20: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/20.jpg)
Faking SPContextShimSPContext.CurrentGet = () =>{ return new ShimSPContext() { WebGet = () => { return new ShimSPWeb() { TitleGet = () => "SharePoint Portal", TitleSetString = (value) => newTitle = value }; }, ListItemGet = () => { return new ShimSPListItem() { IDGet = () => 1, TitleGet = () => "ListItem Title" }; } };};
![Page 21: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/21.jpg)
demo
Website Title Changer WebPartEin kleiner TDD WebPart
![Page 22: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/22.jpg)
Was passiert?
Unit Test
KomponenteControl / Event Receiver / Timer Job / etc.
SharePointStub / Shim
![Page 23: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/23.jpg)
Erstellen der Fake Assembly
![Page 24: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/24.jpg)
Framework-Bedingungen
SharePoint 2013 in Fx 4.0Muss von Hand geändert werden
Test-Projekt selbes Fx wie SharePoint-Projekt
SharePoint 2010 in Fx 3.5
![Page 25: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/25.jpg)
demo
Szenario Support-AnfragenDigging Deeper
![Page 26: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/26.jpg)
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
![Page 27: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/27.jpg)
Agenda
Was ist Test-Driven Development?
Testing SharePoint
Microsoft Fakes Mocking Framework
SharePoint Emulators
![Page 28: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/28.jpg)
SharePoint Emulators
![Page 29: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/29.jpg)
FunktionenImitiert SharePoint APISPSite.Open, SPList.Fields.Add, SPListItem[…]
Erweiterung von Funktionen mit dynamischem Input durch ShimsSPList.GetItems(SPQuery)
![Page 30: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/30.jpg)
demo
SharePoint EmulatorsAchtung Nachahmer!
![Page 31: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/31.jpg)
What’s next?
JavaScript TestingqUnit
Code CoverageVisual Studio, DotCover, NCover
Build ServerAutomated Build
![Page 32: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/32.jpg)
Tools
Visual Studio Unit Test Generatorhttp://bit.ly/13w6xW5
![Page 33: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/33.jpg)
Literatur und Links
The Art of Unit TestingBuch, Roy Osherove
Fakes in der MSDNhttp://msdn.microsoft.com/en-us/library/hh549175.aspx
Visual Studio Test Tooling Guidehttp://vsartesttoolingguide.codeplex.com
Clean CodeBuch, Robert C. Martin
![Page 34: SharePoint Testing mit Visual Studio 2012](https://reader033.vdocuments.site/reader033/viewer/2022061221/54bd21f94a795937578b45e2/html5/thumbnails/34.jpg)
Blog:http://www.dlindemann.de/blog
Email:[email protected]
Community:http://www.brandmysharepoint.de
Daniel LindemannITaCS GmbH
Twitter:@DanielLindemann