A használatához telepíteni kell a junit4 csomagot:
apt-get install junit4
Linuxon jelenleg csak egyetlen .jar kiterjesztésű állománnyal kell dolgoznunk. Telepítés után a helye:
/usr/share/java/junit4.jar
Vagy:
/usr/share/java/junit4-4.10.jar
Windows rendszerre, vagy ha legújabb JUnit csomagot akarjuk használni, látogassunk meg a JUnit weboldalát:
Windowson a következő két .jar kiterjesztésű fájlt kell beszereznünk:
Ha Netbeans használunk, az tartalmaz egy JUnit csomagot telepítve.
import org.junit.Test; import static org.junit.Assert.*; public class HaromszogTeszt { @Test public void tesztSzamitTerulet() { assertEquals(525, Haromszog.szamitTerulet(30, 35), 0); assertEquals(900, Haromszog.szamitTerulet(40, 45), 0); } @Test(expected = IllegalArgumentException.class) public void tesztExceptionSzamitTerulet() { Haromszog.szamitTerulet(0, 35); } }
Windowsos Makefile:
all: javac Haromszog.java JUNIT=c:\bin\SWScite\SWScite_0.5.2_20140505\javalibs\junit-4.11.jar HAMCREST=c:\bin\SWScite\SWScite_0.5.2_20140505\javalibs\hamcrest-core-1.3.jar test: javac -cp .;$(JUNIT);$(HAMCREST) HaromszogTeszt.java java -cp .;$(JUNIT);$(HAMCREST) org.junit.runner.JUnitCore HaromszogTeszt
Linuxos makefile:
all: javac Haromszog.java JUNIT=/usr/share/java/junit4.jar test: javac -cp .:$(JUNIT) HaromszogTeszt.java java -cp .:$(JUNIT) org.junit.runner.JUnitCore HaromszogTeszt
class Haromszog { public static double szamitTerulet(int alap, int magassag) { if (alap <= 0 || magassag <= 0) { throw new IllegalArgumentException("Nem megfelelő paraméterek"); } return (alap * magassag) / 2; } public static void main(String[] args) { System.out.println(szamitTerulet(30, 45)); } }
@echo off java Haromszog & pause
#!/bin/bash java Haromszog && read
A kivételek kezelhetők az ExceptedException osztállyal is:
... import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; ... @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void tesztExceptionSzamitTerulet() { thrown.expect(IllegalArgumentException.class); Haromszog.szamitTerulet(0, 35); } ...
A kivétel tesztelő metódusban, azaz a tesztExceptionSzamitTerulet()-ban meg kell hívnunk egy olyan paraméterrel a tesztelt metódust, ami hibás paramétert tartalmaz.
package haromszog; public class Haromszog { public static double szamitTerulet(int alap, int magassag) throws TulKisSzamException { if (alap <= 0 || magassag <= 0) { throw new TulKisSzamException("Túl kis számok"); } return (alap * magassag) / 2; } public static void main(String[] args) throws IOException { System.out.println(szamitTerulet(30, 45)); } }
package haromszog; public class TulKisSzamException extends Exception { public TulKisSzamException(String msg){ super("Túl kis számok!"); } }
Dobhattunk volna IllegalArgumentException-t is:
throw new IllegalArgumentException("Illegális paraméter!");
Így nem kellett volna saját kivétel készíteni, de kellett volna kezelni mindenféle illegális paramétert azonnal. A HaromszogTest osztályban így nem kell eldobni a kivételeket.
A teljes lista:
package haromszog; import org.junit.Test; import static org.junit.Assert.*; public class HaromszogTest { @Test public void tesztSzamitTerulet() { assertEquals(525, Haromszog.szamitTerulet(30, 35), 0); assertEquals(900, Haromszog.szamitTerulet(40, 45), 0); } @Test(expected = IllegalArgumentException.class) public void tesztExceptionSzamitTerulet() { Haromszog.szamitTerulet(0, 35); } }
package haromszog; public class Haromszog { public static double szamitTerulet(int alap, int magassag) { if (alap <= 0 || magassag <= 0) { throw new IllegalArgumentException("Nem megfelelő paraméterek"); } return (alap * magassag) / 2; } public static void main(String[] args) { System.out.println(szamitTerulet(43, 28)); } }
Ebben a példában a teszteléshez külön osztályt készítettünk. A teszt futtatása a programfuttatástól egy külön esemény. A teszt fordítását és futtatását látjuk az alábbiakban:
all: javac Haromszog.java JUNIT=/usr/share/java/junit4.jar test: javac -cp .:$(JUNIT) HaromszogTest.java java -cp .:$(JUNIT) org.junit.runner.JUnitCore HaromszogTest
all: javac Calc.java JUNIT=c:\bin\SWScite\javalibs\junit-4.11.jar HAMCREST=c:\bin\SWScite\javalibs\hamcrest-core-1.3.jar test: javac -cp .;$(JUNIT);$(HAMCREST) CalcTest.java java -cp .;$(JUNIT);$(HAMCREST) org.junit.runner.JUnitCore CalcTest
Aranyszabályként elfogadható, hogy az üzleti logikára kell tesztet írnunk. Írjunk tesztet minden központi kódra, amely más modulokat hív. Ha egy kódban sok hiba fordul elő, írjunk tesztet. Ha mindig más és más fejlesztő változtatja meg a kódot, szintén a tesztírás ajánlott.