User Tools

Site Tools


tanszek:oktatas:junit5

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
tanszek:oktatas:junit5 [2026/10/01 10:03] – created superusertanszek:oktatas:junit5 [2026/10/04 16:50] (current) – superuser
Line 24: Line 24:
 </code> </code>
 Például: Például:
 +<code:java>
 @Test @Test
 void simpleAssertions() { void simpleAssertions() {
Line 36: Line 37:
     assertNotNull(name);     assertNotNull(name);
 } }
 +</code>
 Nagyon fontos szokás: Nagyon fontos szokás:
 +<code:java>
 assertEquals(expected, actual); assertEquals(expected, actual);
 +</code>
 +tehát először az elvárt, utána a kapott érték.
  
-tehát először az elvárt, utána a kapott érték. 
 3. Több teszt ugyanarra az osztályra 3. Több teszt ugyanarra az osztályra
 Például bővítsük a Calculator osztályt: Például bővítsük a Calculator osztályt:
 +<code:java>
 public class Calculator { public class Calculator {
  
Line 57: Line 61:
     }     }
 } }
 +</code>
 A teszt: A teszt:
 +<code:java>
 class CalculatorTest { class CalculatorTest {
  
Line 82: Line 87:
     }     }
 } }
 +</code>
 Mavenből: Mavenből:
 mvn test mvn test
  
 VS Code-ban pedig az egyes @Test metódusok mellett is megjelenhet a Run Test gomb; a Java Test Runner JUnit 5-öt is támogatja. Visual Studio Code VS Code-ban pedig az egyes @Test metódusok mellett is megjelenhet a Run Test gomb; a Java Test Runner JUnit 5-öt is támogatja. Visual Studio Code
 +
 4. @BeforeEach 4. @BeforeEach
 Gyakran ugyanazt az objektumot kell minden teszthez létrehoznunk. Gyakran ugyanazt az objektumot kell minden teszthez létrehoznunk.
 Ez: Ez:
 +<code:java>
 @Test @Test
 void additionWorks() { void additionWorks() {
Line 103: Line 110:
     assertEquals(7, calculator.subtract(10, 3));     assertEquals(7, calculator.subtract(10, 3));
 } }
 +</code>
 ismétli ezt: ismétli ezt:
 +<code:java>
 Calculator calculator = new Calculator(); Calculator calculator = new Calculator();
 +</code>
 Erre való a: Erre való a:
 @BeforeEach @BeforeEach
  
 Például: Például:
 +<code:java>
 import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
Line 135: Line 144:
     }     }
 } }
 +</code>
 A setUp() minden egyes teszt előtt lefut. A setUp() minden egyes teszt előtt lefut.
 Tehát: Tehát:
-@BeforeEach +@BeforeEach -> @Test #1 
-    ↓ +@BeforeEach -> @Test #2 
-@Test #1+@BeforeEach -> @Test #3
  
-@BeforeEach +Ez nagyon fontos unit testing minta.
-    ↓ +
-@Test #2+
  
-@BeforeEach 
-    ↓ 
-@Test #3 
- 
-Ez nagyon fontos unit testing minta. 
 5. @BeforeAll és @AfterAll 5. @BeforeAll és @AfterAll
 Van olyan inicializáció, amit csak egyszer akarunk lefuttatni. Van olyan inicializáció, amit csak egyszer akarunk lefuttatni.
 +<code:java>
 @BeforeAll @BeforeAll
 static void beforeAllTests() { static void beforeAllTests() {
     System.out.println("Tests starting...");     System.out.println("Tests starting...");
 } }
 +</code>
 és a végén: és a végén:
 +<code:java>
 @AfterAll @AfterAll
 static void afterAllTests() { static void afterAllTests() {
     System.out.println("Tests finished.");     System.out.println("Tests finished.");
 } }
 +</code>
 Teljes példa: Teljes példa:
 +<code:java>
 import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
Line 191: Line 196:
     }     }
 } }
 +</code>
  
 6. Kivételek tesztelése: assertThrows 6. Kivételek tesztelése: assertThrows
 Ez különösen fontos. Ez különösen fontos.
 Tegyük fel, hogy van osztás: Tegyük fel, hogy van osztás:
 +<code:java>
 public int divide(int a, int b) { public int divide(int a, int b) {
  
Line 203: Line 210:
     return a / b;     return a / b;
 } }
 +</code>
 Azt szeretnénk tesztelni, hogy nullával osztás esetén valóban kivételt kapunk: Azt szeretnénk tesztelni, hogy nullával osztás esetén valóban kivételt kapunk:
 +<code:java>
 @Test @Test
 void divisionByZeroThrowsException() { void divisionByZeroThrowsException() {
Line 215: Line 223:
     );     );
 } }
 +</code>
 Ez nagyon tipikus JUnit 5 kód. Ez nagyon tipikus JUnit 5 kód.
 Még jobb: Még jobb:
 +<code:java>
 @Test @Test
 void divisionByZeroThrowsException() { void divisionByZeroThrowsException() {
Line 232: Line 241:
     );     );
 } }
 +</code>
 +Itt már nemcsak azt ellenőrizzük, hogy volt exception, hanem az üzenetét is.
  
-Itt már nemcsak azt ellenőrizzük, hogy volt exception, hanem az üzenetét is. 
 7. assertAll 7. assertAll
 Több dolgot egyszerre is ellenőrizhetsz: Több dolgot egyszerre is ellenőrizhetsz:
 +<code:java>
 @Test @Test
 void severalAssertions() { void severalAssertions() {
Line 247: Line 258:
     );     );
 } }
 +</code>
 Előnye, hogy a JUnit megpróbálja az összes assertiont kiértékelni. Előnye, hogy a JUnit megpróbálja az összes assertiont kiértékelni.
 +
 8. @DisplayName 8. @DisplayName
 Olvasható nevet adhatsz a tesztnek: Olvasható nevet adhatsz a tesztnek:
 +<code:java>
 import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
Line 265: Line 278:
     }     }
 } }
 +</code>
 A VS Code Testing nézetében így sokkal érthetőbb lehet a teszt. A VS Code Testing nézetében így sokkal érthetőbb lehet a teszt.
 +
 9. @Disabled 9. @Disabled
 Ideiglenesen kikapcsolhatsz egy tesztet: Ideiglenesen kikapcsolhatsz egy tesztet:
 +<code:java>
 import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
  
Line 276: Line 291:
     // még nincs kész     // még nincs kész
 } }
 +</code>
 Vagy indoklással: Vagy indoklással:
 @Disabled("A funkció még nincs implementálva") @Disabled("A funkció még nincs implementálva")
Line 286: Line 301:
  
 Nem akarunk öt külön tesztet írni: Nem akarunk öt külön tesztet írni:
 +<code:java>
 assertEquals(3, calculator.add(1, 2)); assertEquals(3, calculator.add(1, 2));
 assertEquals(7, calculator.add(3, 4)); assertEquals(7, calculator.add(3, 4));
 assertEquals(0, calculator.add(-1, 1)); assertEquals(0, calculator.add(-1, 1));
 +</code>
 Használhatunk @ParameterizedTest-et: Használhatunk @ParameterizedTest-et:
 +<code:java>
 import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.CsvSource;
Line 318: Line 335:
     }     }
 } }
 +</code>
 Ez gyakorlatilag négyszer futtatja ugyanazt a tesztet különböző adatokkal. Ez gyakorlatilag négyszer futtatja ugyanazt a tesztet különböző adatokkal.
 +
 11. @ValueSource 11. @ValueSource
 Egyszerű paraméterlistához: Egyszerű paraméterlistához:
 +<code:java>
 @ParameterizedTest @ParameterizedTest
 @ValueSource(ints = {1, 2, 3, 10, 100}) @ValueSource(ints = {1, 2, 3, 10, 100})
Line 328: Line 347:
     assertTrue(number > 0);     assertTrue(number > 0);
 } }
 +</code>
 12. Jó teszt felépítése: Arrange – Act – Assert 12. Jó teszt felépítése: Arrange – Act – Assert
 Ezt érdemes megszokni. Ezt érdemes megszokni.
 +<code:java>
 @Test @Test
 void additionWorks() { void additionWorks() {
Line 343: Line 363:
     assertEquals(5, result);     assertEquals(5, result);
 } }
 +</code>
 A három rész: A három rész:
 Arrange Arrange
tanszek/oktatas/junit5.1790849039.txt.gz · Last modified: by superuser