Asenna Eclipse: http://www.eclipse.org/ http://www.eclipse.org/downloads/

JUnit - yksikkötestaus Eclipsessä

Eclipsen versiosta 3.1 lähtien JUnit sisältyy normaaliin asennuspakettiin automaattisesti

Coverlipse - yksikkötestauksen kattavuudenarviointi

Asennus Eclipsestä käsin

Valitse

  • Help -> Software Updates -> Find and Install
  • Search for new features to install -> Next
  • New Remote Site
  • Name: Coverlipse, URL: http://coverlipse.sf.net/update/ -> OK
  • Finish

Etsinnän jälkeen Eclipse näyttää mitä löytyi...

  • Ruksaa Coverlipse
  • I accept the terms in the license agreement -> Next
  • Finish
  • (Uudista HUPNet yhteys prkl!)
  • Install
  • Käynnistä Eclipse uudelleen

Voit asentaa Coverlipsen myös käsin. Ohjeet: http://coverlipse.sourceforge.net/download.php

Testausesimerkki

Työkalujen käyttöesimerkki

Testataan seuraavassa esimerkinomaisesti luokkaa joka laskee lukuja (Lainattu How to use Coverlipse - ohjeesta). Esimerkkiluokat löytyvät osoitteista http://coverlipse.sourceforge.net/Computation.java ja http://coverlipse.sourceforge.net/ComputationTest.java. Lataa ne valmiiksi koneelle.

  • Eclipse auki
  • Luodaan uusi projekti File > New > Project > Java Project jne...
  • Tuo em. tiedostot projektiin File > Import > File system > Etsi tiedostot ja merkkaa ne > Finish
  • Lisää JUnit projektiin
    • Project > Properties > Java build path > Libraries
    • Add Variable ... > Valitse JUNIT_HOME > Extend > Valitse junit.jar > OK
    • (Tätä vaihetta ei normaalisti tarvita kun testitapauksen tekee File > New > JUnit Test Case avulla)
  • Kannattanee päivittää näkymä F5:llä

Projekti-ikkuna (Package Explorer) näyttää nyt tältä:

Nyt testit ajetaan valitsemalla

  • Run > Run As > JUnit Test

Nyt projekti-ikkunan sijaan näkyy JUnit -ikkuna joka kertoo virheet, jos niitä on. Tässä tapauksessa virheitä ei ole joten Failures -ikkuna on tyhjä.

Coverlipse mittaa kattavuuden. Sulje JUnit -ikkuna ja aja testi valitsemalla

  • Run > Run As > JUnit w/Coverlipse

Nyt koodi-ikkunassa vasemmalla näkyy pukki vihreällä pohjalla kun rivi on testattu ja huutomerkki punaisella pohjalla kun testaus ei riviä koskettanut.

Alhaalla olevasta Coverlipse Markers View -ikkunasta pääsee tuplaklikkaamalla riviä halutulle riville halutussa tiedostossa.

Testauksen kattavuuden korjaaminen

Testausmenetelmästä

Esimerkissä käytetty testausmenetelmä on nimeltään Fixture, eli luokka sisältää enemmän kuin yhden testin. Testiluokka periytetään JUnitin luokasta TestCase ja itse testit on nimetty siten että ne alkavat sanalla test. JUnit ajaa automaattisesti kaikki test -alkuiset metodit.

Itse testit tapahtuvat olettaen metodin tuloksen olevan jotain tiedettyä, esim. tosia (assertTrue) tai yhtäsuuria (assertEquals, lisää määreitä JUnit APIssa). Yhdessä testimetodissa testataan vain yhtä asiaa. Kannattaa lukaista läpi artikkeli yleisimmistä virheistä testauksessa: http://www.exubero.com/junit/antipatterns.html.

Coverlipse ei itsessään tee muuta kuin katsoo sivusta, kun JUnit testaa ja pitää kirjaa siitä mitkä rivit lähdekoodista käydään läpi.

Itse korjaukset

Kun kattavuusmerkkejä nyt tarkastelee niin testattavan luokan riville 50 ei päästä koska testiluokka ei tarkista nollalla jakoa. Tämä korjataan tekemällä testiluokkaan uusi metodi, joka kattaa myös tämän rivin esim. seuraavasti:

	public void testDivideByZero() {
	    double divideResult = computation.divide(1, 0);
	    assertEquals(Double.POSITIVE_INFINITY, divideResult, 0.0d);
	}

Kuten kommenteistakin näkee vähennyslaskun testaus on myös jäänyt toteuttamatta. Korjataan metodia siis esimerkiksi seuraavasti:

	public void testSubstract() {
		int substractResult = computation.substract(4,2);
		assertEquals(2, substractResult);
	}

Loppujen kattavuuksien kanssa voidaan menetellä kahdella tavalla

  • joko korjataan lähdekoodia jotta kyseinen alue olisi edes mahdollista testata
  • tai merkitään testaussuunnitelmaan että kyseistä koodia ei voi testata ... tosin jos jollekin koodiriville ei pääse mitenkään niin joka tapauksessa olisi aihetta katsoa sitä ensimmäistä vaihtoehtoa.