Document:UnitTesting

From WOSI
Jump to navigation Jump to search
UnitTesting
Datum 18 april 2008
Fase Fase 4
Versie 0.2
Status Draft
Auteurs Jasper Krijgsman
Goedgekeurd door
Aangepast door

Testen binnen WOSI

Door het schrijven van modulaire en 'loosely coupeled' applicaties maak je de code goed testbaar. Het Spring framework maakt het mogelijk om software op deze manier te schrijven.

Unit testing

Een unit is het kleinste testbare deel van een applicatie. In een object-geörienteerde taal zijn dit methodes.

Een unit test moet eigenlijk alleen een specifieke unit testen en niet de code waarvan die unit misschien gebruik maakt. Hiervoor zullen vaak "fake" of "mock" objecten nodig zijn, deze objecten zijn zo simpel mogelijk en bevatten alleen de functionaliteit die de geteste unit nodig heeft om te draaien.

De versie van JUnit die binnen wosie gebruikt word is versie 4.

Fixtures

Het schrijven van de code om de omgeving van de test op te zetten kost vaak meer tijd dan het schrijven van de test. Als je meerdere test hebt die operaties uitvoeren op de zelfde set van objecten kun je een fixture schrijven.

mock objecten

Een mock object is een simulatie van een echt object binnen je applicatie. Een mock object is meestal een implementatie van een interface met erg weinig functionaliteit.

Mock objecten zijn belangrijk in unit testen, omdat alleen de unit getest moet worden en niet de onderliggende infrastructuur. In Spring zijn veel objecten afhankelijk van het hele framework. De services hebben bijvoorbeeld een request en een response object nodig, normaal krijgen ze dit van Spring.

Het Spring framework bevat een aantal mock classes waarmee de meest gebruikte interfaces binnen spring vervangen kunnen worden door eigen informatie. Deze classes bevinden zich in "org.springframework.mock.web.*".

Hieronder vind je de meest gebruikte:

  • MockHttpServletRequest
  • MockHttpServletResponse
  • MockHttpSession
  • DelegatingServletInputStream
  • DelegatingServletOutputStream

Met gebruik van de Spring mock objecten zou een simpele JUnit testcase van een service zou er zo uit kunnen zien.

voobeeld

Literatuur

"Test-Driven Development By Example", Kent Beck (In WOSI bibliotheek)
"Expert Spring MVC and Web Flow" Chapter 10, Seth Ladd (In WOSI bibliotheek)