tanszek:oktatas:junit5
Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| tanszek:oktatas:junit5 [2026/10/01 10:03] – created superuser | tanszek:oktatas:junit5 [2026/10/04 16:50] (current) – superuser | ||
|---|---|---|---|
| Line 24: | Line 24: | ||
| </ | </ | ||
| Például: | Például: | ||
| + | < | ||
| @Test | @Test | ||
| void simpleAssertions() { | void simpleAssertions() { | ||
| Line 36: | Line 37: | ||
| assertNotNull(name); | assertNotNull(name); | ||
| } | } | ||
| + | </ | ||
| Nagyon fontos szokás: | Nagyon fontos szokás: | ||
| + | < | ||
| assertEquals(expected, | assertEquals(expected, | ||
| + | </ | ||
| + | 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: | ||
| + | < | ||
| public class Calculator { | public class Calculator { | ||
| Line 57: | Line 61: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| A teszt: | A teszt: | ||
| + | < | ||
| class CalculatorTest { | class CalculatorTest { | ||
| Line 82: | Line 87: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| 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: | ||
| + | < | ||
| @Test | @Test | ||
| void additionWorks() { | void additionWorks() { | ||
| Line 103: | Line 110: | ||
| assertEquals(7, | assertEquals(7, | ||
| } | } | ||
| + | </ | ||
| ismétli ezt: | ismétli ezt: | ||
| + | < | ||
| Calculator calculator = new Calculator(); | Calculator calculator = new Calculator(); | ||
| + | </ | ||
| Erre való a: | Erre való a: | ||
| @BeforeEach | @BeforeEach | ||
| Például: | Például: | ||
| + | < | ||
| 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: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| A setUp() minden egyes teszt előtt lefut. | A setUp() minden egyes teszt előtt lefut. | ||
| Tehát: | Tehát: | ||
| - | @BeforeEach | + | @BeforeEach |
| - | ↓ | + | @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ó, | Van olyan inicializáció, | ||
| + | < | ||
| @BeforeAll | @BeforeAll | ||
| static void beforeAllTests() { | static void beforeAllTests() { | ||
| System.out.println(" | System.out.println(" | ||
| } | } | ||
| + | </ | ||
| és a végén: | és a végén: | ||
| + | < | ||
| @AfterAll | @AfterAll | ||
| static void afterAllTests() { | static void afterAllTests() { | ||
| System.out.println(" | System.out.println(" | ||
| } | } | ||
| + | </ | ||
| Teljes példa: | Teljes példa: | ||
| + | < | ||
| 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: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| 6. Kivételek tesztelése: | 6. Kivételek tesztelése: | ||
| 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: | ||
| + | < | ||
| public int divide(int a, int b) { | public int divide(int a, int b) { | ||
| Line 203: | Line 210: | ||
| return a / b; | return a / b; | ||
| } | } | ||
| + | </ | ||
| 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: | ||
| + | < | ||
| @Test | @Test | ||
| void divisionByZeroThrowsException() { | void divisionByZeroThrowsException() { | ||
| Line 215: | Line 223: | ||
| ); | ); | ||
| } | } | ||
| + | </ | ||
| Ez nagyon tipikus JUnit 5 kód. | Ez nagyon tipikus JUnit 5 kód. | ||
| Még jobb: | Még jobb: | ||
| + | < | ||
| @Test | @Test | ||
| void divisionByZeroThrowsException() { | void divisionByZeroThrowsException() { | ||
| Line 232: | Line 241: | ||
| ); | ); | ||
| } | } | ||
| + | </ | ||
| + | Itt már nemcsak azt ellenőrizzük, | ||
| - | Itt már nemcsak azt ellenőrizzük, | ||
| 7. assertAll | 7. assertAll | ||
| Több dolgot egyszerre is ellenőrizhetsz: | Több dolgot egyszerre is ellenőrizhetsz: | ||
| + | < | ||
| @Test | @Test | ||
| void severalAssertions() { | void severalAssertions() { | ||
| Line 247: | Line 258: | ||
| ); | ); | ||
| } | } | ||
| + | </ | ||
| 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: | ||
| + | < | ||
| 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: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| 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: | ||
| + | < | ||
| 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 | ||
| } | } | ||
| + | </ | ||
| Vagy indoklással: | Vagy indoklással: | ||
| @Disabled(" | @Disabled(" | ||
| Line 286: | Line 301: | ||
| Nem akarunk öt külön tesztet írni: | Nem akarunk öt külön tesztet írni: | ||
| + | < | ||
| assertEquals(3, | assertEquals(3, | ||
| assertEquals(7, | assertEquals(7, | ||
| assertEquals(0, | assertEquals(0, | ||
| + | </ | ||
| Használhatunk @ParameterizedTest-et: | Használhatunk @ParameterizedTest-et: | ||
| + | < | ||
| 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: | ||
| } | } | ||
| } | } | ||
| + | </ | ||
| 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: | ||
| + | < | ||
| @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); | ||
| } | } | ||
| + | </ | ||
| 12. Jó teszt felépítése: | 12. Jó teszt felépítése: | ||
| Ezt érdemes megszokni. | Ezt érdemes megszokni. | ||
| + | < | ||
| @Test | @Test | ||
| void additionWorks() { | void additionWorks() { | ||
| Line 343: | Line 363: | ||
| assertEquals(5, | assertEquals(5, | ||
| } | } | ||
| + | </ | ||
| A három rész: | A három rész: | ||
| Arrange | Arrange | ||
tanszek/oktatas/junit5.1790849039.txt.gz · Last modified: by superuser
