Eclipse ja JUnit-ohjelmoijatestit Tarkoitus on tutustua Eclipsen käyttöön vähän lähemmin ja varsinkin JUnit-ohjelmoijatesteihin (ohjelmoijatesti on vanhalta nimeltä yksikkötesti). Ohjelmoijatestit ovat perin käteviä muokattaessa paljon ohjelmakoodia, sillä niiden avulla voi varmistaa, etteivät muutokset riko ohjelman toimintaa. Ne ovat myös hyvä dokumentointiväline, ja auttavatpa ne vielä hyvin mutkikkaalla tavalla: on huomattu, että jos ohjelmoijatestin tekeminen on hankalaa, on testikohteessa jotain muutakin vikaa, ja se kannattaa uudelleentyöstää. Eclipse Käynnistä Eclipse. Käynnistymisen yhteydessä tulee valita Eclipsen työskentelyalue. Valitse alueeksi kiintolevyn juuren tmp- tai temp-hakemisto, jollet halua tulosten säilyvän, tai jokin hakemisto omassa hakemistopuussasi. Viimeinen osa polussa on uusi hakemisto, jonka Eclipse luo, ja yleensä nimeltään workbench, vaikka voit kyllä nimetä sen vaikka isomman projektiryppään mukaan (esim. tie343). Tärkeää on, ettet valitse oletushakemistoa, tai jonkun muun käyttämää hakemistoa. Tämän jälkeen tulee esille valikko, josta voit valita yleisoppaan tai jonkin erikoisoppaista, tai Eclipsen kehitinnäkymän. Lue ja tutustu osioihin Overview (yleisopas) ja Build a simple Java application. Älä oi'o Java-tutoriaalissa, vaan koeta kestää tehdä kaikki ohjeiden mukaan. JUnit ohjelmoijatestit Tämän osion aikana tehdään yksinkertainen autolaskuri (yllätys). Ei nyt innostuta graafisesta käyttöliittymästä, vaan tehdään vain pieni laskuriolio. Oikeastaan, ei tehdä itse, vaan teetetään suurelta osin Eclipsellä. Ensin on aina kuva tilanteesta, sitten selitys. Koeta kestää mukana, äläkä oio, vaikka mieli tekisi. (OK, sen tekemäni virheen voit jättää tekemättä.) Teksti alla on järjestetty siten, että ensin tulee kuva, sitten kuvaan liittyvä teksti. JUnitin kotisivut löytyvät osoitteesta http://www.junit.org/, josta löytyy myös kasoittain hyvää dokumentaatiota ja opastusta JUnitin käyttöön. Esimerkiksi http://junit.sourceforge.net/doc/testinfected/testing.htm kertoo sen mitä tämä teksti ja paljon enemmän, mutta ilman kehitysympäristösidonnaista toimintaa. Suosittelen sitä luettavaksi. Sivu 1 / 14
Aloita luomalla uusi projekti nimeltä autolaskuri. Ensimmäisen sivun Finnish kelpaa; tarkempia asetuksia ei tarvita. Kun projekti on valmis, valitse projektin valikko hiiren valikkonäppäimellä (yleensä oikeanpuoleisin), ja valitse valikosta New - JUnit Test Case. Sivu 2 / 14
Jos junit.jar ei ole jo polussa, ehdottaa Eclipse sen liittämistä polkuun. Hyväksy liitos. Anna luokalle nimeksi TestLaskuri ja paketille, johon luokka tulee, anna nimeksi testit. Jälleen Finnish ensimmäisessä ruudussa on kelvollinen. Tee luokkaan metodi public void testluonti(), joka testaa Laskuri-olion luonnin onnistumista. Metodista TestCase.assertEquals on apua. Koeta ensin tehdä metodi itse, katson vastaus kuvasta, jos ei meinaa onnistua. Ohjelmassa on virheitä. Jos katsot lähdekoodinäkymän vasenta marginaalia, näkyy siellä lamppu-rasti -ikoneita samojen rivien kohdalla, joissa on punaaaltoviivalla merkittyjä virheitä. Klikkaa ikonia, ja esille ponnahtaa joukko vaihtoehtoja automaattisiksi korjauksiksi. Vieressä näet keltaisella pohjalla korjauksen vaikutuksen. Valitse Create class "Laskuri" kaksoisklikkaamalla sitä. Sivu 3 / 14
Kuvaruudulle aukeaa uuden javaluokan luontidialogi. Asetusten pitäisi olla muuten kunnossa, mutta muuta paketin nimeksi luokat; paremmankin nimen voisi keksiä... Jätä uusi luokka sellaiseksi kuin Eclipse sen generoi. Palaa TestLaskuri luokan pariin, vielä kaikkia virheitä ei ole korjattu - ja Eclipsen saa vielä korjaamaan niitä joukon ohjelmoijan puolesta ;) Seuraava virhe on, ettei Laskuri-luokalla ole rakenninta,... Sivu 4 / 14
... ja sekin hoituu Eclipsen automaattisilla korjauksilla (se lamppu-rasti -ikoni). Huomio laatikot generoidun metodin nimen, sekä ainoan parametrin tyypin ja nimen ympärillä. Metodin nimi on valittuna, voit muokata sitä, joskaan tarvetta ei ole. Parametrin tyyppiin, seuraavaan laatikkoon, voi siirtyä painamalla TAB-näppäintä. Muuta parametrin nimeksi kohde. Rakentimen toiminta ei ole kummoinen, sijoitetaan parametrin kohde arvo jäsenmuuttujan (atribuutin) kohde arvoksi. Tallenna, ja jäsenmuuttujan nimi alleviivautuu punaisella aaltoviivalla. Eclipse osaa korjata "virheen" tutusta ikonista. Sivu 5 / 14
Huomaa, kuinka jäsenmuuttujan nimen ympärille tulee laatikko, ja jäsenmuuttuja tulee maalatuksi. Koeta muuttaa jäsenmuuttujan nimeksi vaikkapa nimi. Älä liikuta kohdistinta, aloita vain kirjoittamaan,...... ja huomaat, kuinka jäsenmuuttujan nimi muuttuu myös esittelyssään. Hienoa ja kätevää! Seuraava virhe: Laskurilla ei ole metodia arvo. Sivu 6 / 14
Luodaan metodi arvo. Metodin ei tarvitse kuin palauttaa jäsenmuuttujan arvo arvo. Arvokas apu on jälleen Eclipsen virheenkojaajan tarjoama. Luodaan jäsenmuuttuja arvo. Vaan missä vika, kun assertequals metodin kutsussa on virhemerkintä? Unohdinpa metodia tehdessä tarkastaa sen tyypin, ja oletukseksi tuli String. Eikä Eclipse apuakaan tarjoa, joten metodia editoimaan, mars! Siirrä kohdistin metodin nimen kohdalle, tai metodin kohdalle, ja hiiren valikkonappia klikkaamalla esiin tulee ponnahdusvalikko, josta löytyy varsin ovela alavalikko Source, ja sen sisältä edelleen toiminto Change Method Signature... Sivu 7 / 14
Hankala dialogi? No ei. Muuta paluuarvon tyypiksi int. Eclipse huomauttaa paluuarvon tyypin ja jäsenmuuttujan tyypin yhteensopimattomuudesta. Ei välitetä siitä vielä. Sivu 8 / 14
Sitten avautuu dialogi, jossa voidaan tarkistella tulevia muutoksia. Vasen koodinäkymä näyttää alkuperäisen, oikea muutetun koodin. Huomioi välissä oleva viiva ja pienet merkit oikean koodinäkymän oikeassa mariginaalissan. Viiva koodinäkymien välillä kertoo lähde- ja kohdealueen suhteen, merkki oikeassa marginaalissa osoittaa virheen paikan koko tiedostossa. Tämä merkki nopeuttaa paljon liikkumista pitkässä tiedostossa. Paina OK-nappia. Eclipsen apuri auttaa nyt korjaamaan jäsenmuuttujan tyypin. Ja niin on Laskuri-luokka valmis - tältäosin. Sivu 9 / 14
Klikkaa valikkonapilla testiluokkan nimeä ja valitse esiintulvasta valikosta Run - JUnit Test. Eclipse suorittaa JUnit-luokan TestLaskuri metodin testluonti. Tulos saattaa jäädä piiloon......mutta tabista sen saa esille. Vihreä palkki kertoo kaikkien testien onnistuneen. (Testejä voisi olla useampiakin, ideana on tehdä sanalla test alkavia metodeja. Sivu 10 / 14
Tee testit laskurin arvon lisäykselle ja nollaukselle. Kuvasta yllä saat vinkkejä tarvittaessa. Huomaa, kuinka Eclipsellä on piilotettu tarvittujen metodien toteutus. Oikealle osoittava kolmio metodirivin vasemmassa marginaalissa virheikonin oikealla puolella osoittaa rivejä piilotetun. Yläpuolella näkyy alas osoittava kolmio, jonka kohdalla kaikki rivit näkyvät. Kokeile piilottaa ja jälleen paljastaa rivejä. Sivu 11 / 14
Voit myös kokeilla ajaa virheellistä ohjelmaa. Eclipse mahdollistaa tämän, mutta koska kyseessä on ohjelmoijatesti, ei testi mene läpi, ymmärrettävästi. Tässä kuvassa on hauska virhe kohdistimen kohdalla. Mikä? Ratkaisu löytyy tästä kuvasta. Korjauks(i)en jälkeen ohjelmoijatestin tulos pitäisi olla kuvan mukainen. Hieno valmis laskuriluokka löytyy tämän linkin takaa. Eclipse on myös varsin hyvin varustettu uudelleentyöstämistyökaluillaan. Yksi näistä on käytännöllinen nyt, nimittäin rajapinnan luokasta irroittava työkalu. Laskureitahan voi olla toteutukseltaan useita. Tee siis Laskuri-luokasta rajapinta Laskija käyttäen työkalua Extract Interface..., joka löytyy ponnahdusvalikon Refactor-valinnan takaa. Sivu 12 / 14
Eclipse tiedustelee rajapinnan nimeä ja siihen liittyviä metodeja. Seuraavaksi näytetään tulevat muutokset. Klikkaa OK,... Sivu 13 / 14
... ja uusi rajapinta on valmis. Varmistetaan vielä, ajetaan ohjelmoijatesti (katso valikosta pikanäppäinkomento). Ei virheitä, hienoa! Sitten hieman vaikeampi tehtävä. Jokaisen testimetodin alussa luodaan uusi laskuriolio. Miten saisit muutettua testiluokkaa niin, että laskuriolio luotaisiin vain kerran? (Vinkki: TestCase dokumentaatio!) JUnit-kehys ja dokumentaatiohan löytyi osoitteesta http://www.junit.org/. Sivu 14 / 14