Vanhoja postauksia: Test driven development

Kylläpä joskus voikin tuntea itsensä tyhmäksi. Vaikka on kuinka pitkään itse toitottanut testien hyödyllisyyttä ja arvoa, ei sitä itse kuitenkaan tule aloitettua koodaamista testien kautta. Onneksi pää kestää sen että tunnustaa välillä olevansa väärässä ja voi rehellisesti sanoa että olisi ehkä tässäkin kohdassa pitänyt jo heti hieman aikaisemmin miettiä hommaa pidemmälle ja kirjoittaa sille testejä.

Spring Framework on muuten loistava framework ohjelmoijalle – myös testien kannalta. Inversion of control antaa mahdollisuuden koostaa sovelluksesta testejä varten sellaisen version jossa esimerkiksi DAO-taso on korvattu mockeilla – tai vastaavasti DAO-operaatiot ajetaan kätevästi oman transaktioinsa sisällä.

AbstractTransactionalSpringContextTests-luokka on viime viikkojen aikana tullut uudeksi tuttavuudeksi, ja onkin nostanut testien kirjoittamisen mielekkyyden uudelle tasolle – kun testeissä on voinut samalla testata sekä controller-luokkien ja daon yhteentoimivuutta. Pelkkien unit-testien kirjoittaminen on tuntunut aina puuduttavalta, kun pahimmillaan on tuntunut että kirjoittaa samaa asiaa varten koodia kaksi kertaa – ja aikaisemmin taas tietokannan saattaminen testien kanssa sopivaan synkronoituun tilaan on ollut turhauttavan raskas operaatio… tai sitä on ajatellut sellaisena.

Nyt Springin kanssa testaaminen on yllättävän kätevää kun testit tehdään devaustietokantaa vasten omassa transaktiossaan. Voimme luottaa tiettyihin perusrakenteisiin devaus-tietokannassa ja asettaa sen testi-transaktion sisällä sellaiseen tilaan kuin haluamme. Ja kun testi on ohi, palaa kanta transaktion rollbackatessa alkuperäiseen tilaansa. Nerokasta.


Vieläkään en ole päässyt tekemään projektia niin, että testejä olisi oikeasti pakotettu tekemään ja myös pidetty huolta siitä että niin tapahtuu. Testien hyödyllisyyttä on kuitenkin mahdotonta kieltää – ja Spring frameworkissa on entisestään menty siihen suuntaan että voit testata sen mitä teet.

Erityisesti Webflow kunnostautuu tässä, vieden verkkosovelluksien tekemisen ja testaamisen uudelle tasolle. Sekä sovelluksen flow, että actionit voidaan testata erikseen.

This entry was posted in java, programming, spring, technology. Bookmark the permalink.

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out / Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out / Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out / Muuta )

Google+ photo

Olet kommentoimassa Google+ -tilin nimissä. Log Out / Muuta )

Muodostetaan yhteyttä palveluun %s