A JUnit keretrendszer összekapcsolása

A Java kód teszteléséhez van egy nagyszerű keretrendszerünk, a JUnit . Remekül működik, folyamatosan frissül, nagyon népszerű és persze az Intellij IDEA is nagyon szorosan integrálódik vele.

Most mindenki ennek a keretrendszernek az ötödik verzióját használja - a JUnit 5-öt , bár sok projektben még mindig megtalálható a negyedik verziója. Nem sokban különböznek egymástól, de azért megnézzük a legújabbat. Azt hiszem, mire elkezdesz aktívan teszteket írni, jóváhagyod a választásomat.

Szóval, hogyan lehet hozzáadni a JUnit-ot a projekthez? A Maven megtanulása után már egyszerű lesz: csak add hozzá ezt a kódot a pom.xml-hez:

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

Egyébként, ha azt szeretné, hogy a Maven az összeállítási szakaszban ( teszt szakaszban ) futtassa a teszteket, akkor hozzá kell adnia egy további töredéket a pom.xml fájlhoz:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@Teszt annotáció

Tegyük fel, hogy van egy órája, amelyet tesztelni szeretne. Mi a legjobb módja ennek? Kezdjük egy példával, mert nehéz egy absztrakt osztályt tesztelni :)

Tegyük fel, hogy van egy Calculator osztályunk , amely 4 alapvető műveletet tud végrehajtani: összeadás, kivonás, szorzás és osztás. Írjuk meg:

class Calculator {
    	public int add(int a, int b) {
        	return a+b;
    	}

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

Ennek az osztálynak a metódusait szeretnénk tesztelni. Soha nem tudhatod, a jövőben változtatnak valamit, és minden leáll. Hogyan írhatunk hozzá teszteket?

Létre kell hoznunk egy másik osztályt. Ehhez általában ugyanazt a nevet veszik fel, és hozzáadják a Teszt utótagot . Minden módszerhez hozzá kell adni legalább egy vizsgálati módszert. Példa:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

Régebben előírás volt, hogy a metódus neve test szóval kezdődjön , de ez már nem kötelező.

JUnit teszt példák

Írjunk néhány példát, amelyekben a CalculatorTest osztályunk módszereit teszteljük :

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

Így néz ki egy tipikus JUnit teszt. Az érdekességből: itt az assertEquals() speciális metódust használjuk : összehasonlítja a neki átadott paramétereket, amit a nevében az egyenlő szó jelzi.

Ha az assertEquals()- nak átadott paraméterek nem egyenlőek, a metódus kivételt dob, és a teszt sikertelen lesz. Ez a kivétel nem akadályozza meg más tesztek futtatását.