TDD - Test Driven Development

Tietokonejutut, pelit ja muu nörtismi; autot, kaasupullot ja muut lelut
huima

TDD - Test Driven Development

Viesti Kirjoittaja huima »

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ä.

Springin 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.

Eipä tämä ketään kiinnosta, mutta kirjoitan silti. Ihan piruuttani.