Tartalomjegyzék

< Java tesztelés

JUnit

Telepítés

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:

  1. junit
  2. hamcrest-core

Ha Netbeans használunk, az tartalmaz egy JUnit csomagot telepítve.

Háromszög területe kivétel megkövetelesésével

HaromszogTeszt.java
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:

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:

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
Haromszog.java
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));
	}
}
startHaromszog.bat
@echo off
java Haromszog & pause
startHaromszog.sh
#!/bin/bash
java Haromszog && read

ExpectedException használata

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.

Haromszog.java
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));
    }
}
TulKisSzamException.java
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:

HaromszogTest.java
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);
    }    
}
Haromszog.java
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:

Makefile.lin
all:
	javac Haromszog.java
 
JUNIT=/usr/share/java/junit4.jar
 
test:
	javac -cp .:$(JUNIT) HaromszogTest.java 
	java -cp .:$(JUNIT) org.junit.runner.JUnitCore HaromszogTest
Makefile.win
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
 

Mire ne írjunk tesztet

Mire írjunk tesztet?

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.

Linkek