180 likes | 287 Views
Unittest i MOSS. SPBG. Test driven development Unit test frameworks MOSS TDD Mocking Design patterns. Test driven development.
E N D
Unittest i MOSS SPBG
Test driven development • Unit test frameworks • MOSS TDD • Mocking • Design patterns
Test driven development • Test-driven development (TDD) is a software development technique that uses short development iterations based on pre-written test cases that define desired improvements or new functions. Each iteration produces code necessary to pass that iteration's tests. Finally, the programmer or team refactors the code to accommodate changes. A key TDD concept is that preparing tests before coding facilitates rapid feedback changes.
Test driven development • Mind set • Test før implementation • Unit test vs Integrations test
Unit test • Test af den udviklede kode • Ikke test af ”andres kode” • Flere test til den samme kode • Test for at finde fejl • Test for se fejl håndtering
Unit test • Fordele: • Nemt at overdrage til anden udvikler • Fejl bliver ofte fundet før det er i drift • Giver en ”kontrakt” • Kvalitets sikring • Ulemper: • Meget mere kode • Kan give større arbejde ved refaktorering • Svært at omstille sig til
Test Demo Opgave • Udvikling af en webpart i MOSS. • Webpart skal vise vejret i et givet land • Landet er default givet af web site lokalisering • Vejr data hentes fra en webservice • Præsentationen skal bruge et specifikt xsl • Det skal være muligt at angive et andet land end default
MOSS TDD • Visual Studio Unit test (2008 / team system) • Nunit - http://www.nunit.org • Udfordring: • Data skal klargøres til test, ikke ens miljøer • Bruger context er svær at teste. CurrentWeb • SharePoints klasser • Er Sealed • Ingen interfaces • Intern construnctors • Collections har ingen add metoder
Mocking • Simulering af objekter • Eliminere eksterne afhængigheder i test • Eliminere Interne afhængigheder
Mocking • Farme works: • Nmock - http://www.nmock.org • RhinoMock - http://ayende.com/projects/rhino-mocks.aspx • TypeMock - http://www.typemock.com
TypeMock • Type mock AAA • Arrange • Act • Assert • To syntakser • Isolator Pattern • Natural Mocks™
Typemock - Arange • Opsætning af forventninger Isolator Natural
Typemock - Act • Udførsel af kald
TypeMock - Assert Verificering af kørsel
Design patterns • Design patterns kan give mere testbar kode • Eksempler • Dependency injection • Factory pattern / Command pattern • Model–view–controller
Dependency injection • Frigør koden fra oprettelse af eksterne afhænigheder • Instantiering af eksterne afhæigheder sker uden for metoden eller klassen
Factory / Command pattern • Indsætter en central mekanisme til oprettelse af objekter • Factory eller Command klasse kan konfigureres til at kontrollere test
Model–view–controller • Opsplitning af ansvar for visning af data, • Model indeholder data funktioner • Viewer kontrollere visning • Controller reagere på events og binder model og viewer sammen • Eksempel: Webpart der bruger XSLT • XSLT er Viewer • XML data er model • Webpart cs. er controller • MS framework se http://www.asp.net/mvc/