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.
GO TO FULL VERSION