< Programozás

Egységtesztelés

Szerző: Sallai András

Copyright © Sallai András, 2021

Licenc: CC Attribution-Share Alike 4.0 International

Web: https://szit.hu

A tesztelés szintjei

egységtesztelés

komponens teszt (vagy modul teszt)

integrációs teszt

rendszerteszt

átvételi teszt

Egységtesztelő rendszerek

JUnit - Java

NUnit - C#

Jest, QUnit, Mocha, Jasmine - JavaScript

unittest (Python modul) - Python

JUnit teszt

A JUnit egy egységteszt-keretrendszer.

Dokumentáció:

https://junit.org/junit5/docs/current/api/ (2021; JUnit5)

Annotáció

Az org.junit.jupiter.api.Test annotáció a leggyakrabban használt annotációs osztály.

@Test void testCalcArea() { assertEquals(525, triangle.calcArea(30, 35)); }

RepeatedTest

Többször végrehajtandó:

@RepeatedTest(5)

DisplayName

Egyéni név:

@DisplayName(„Valami a tesztről”)

Order

Végrehajtási sorrend megvalósítása

@Order(2)

másodiknak

@Test @Order(1) void oneTest() { //teszt } @Test @Order(20) void twoTest() { //teszt }

Tag

feliratozás

@Tag(„lassú”)

Disable

teszt tiltása

@Disabled(„Please fix and enable”)

@Test @Disabled("Please fix and enable") public void checkSomething() { // assertThrows() }

assert

Néhány függvény az org.unit.jupiter.api.Assertions osztályból:

assertEquals()

assertNotEquals()

assertTrue()

assertFalse()

assertNull()

assertNotNull()

assertSame()

assertNotSame()

assertArrayEquals()

assertInstanceOf​() - objektum típusának ellenőrzése

assertIterableEquals​() - iterálható

assertThrows​() - kivétel ellenőrzése

Az AAA minta

Az AAA, a Arrange, Act, Assert szavakból alkotott betűszó.

A Unit tesztek általános felépítésének mintája.

Arrange: adatok beállítása, előkészítése

Act: tesztelt metódus hívása

Assert: Ellenőrzés

Felépítő és lebontó funkciók

AfterAll

Minden teszt után végrehajtandó.

A metódusnak statikusnak kell lennie.

AfterEach

A következő tesztek után:

@Test, @RepeatedTest, @ParameterizedTest, @TestFactory, @TestTemplate

BeforeAll

Minden teszt előtt végrehajtandó.

A metódusnak statikusnak kell lennie.

BeforeEach

A következő tesztek előtt:

@Test, @RepeatedTest, @ParameterizedTest, @TestFactory, @TestTemplate

@BeforeEach void setUp() throws Exception { triangle = new Triangle(); }

Tesztírás

import static org.junit.jupiter.api.Assertions.assertEquals; import lan.zold.Triangle; import org.junit.jupiter.api.Test; class FirstTests { private final Triangle triangle = new Triangle(); @Test void testCalcArea() { assertEquals(2, triangle.calcArea(30, 35)); } }
@Test void checkSomething() { // TODO megvalósítandó fail("not yet implemented"); }

Kivétel ellenőrzése

@Test void testExpectedException() { Assertions.assertThrows(ApplicationException.class, () -> { //teszt }); }
@Test void testExpectedException() { Assertions.assertThrows(NumberFormatException.class, () -> { Integer.parseInt("egy"); }); }

Gyakorlat

Írjon programot, amely fájlbeolvasó függvényt tesztel.

Forrás

https://junit.org/junit5/docs/current/user-guide/ (2021)