[[oktatas:programozás:java:java_teszteles:testng|< TestNG]]
====== TestNG bevezetés ======
* **Szerző:** Sallai András
* Copyright (c) 2023, Sallai András
* Szerkesztve: 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== A TestNG =====
A TestNG egy tesztelő keretrendszer a JUnit-hoz hasonlóan,
azonban bevezet néhány új funkciót, ami hatékonyabbá teszi.
A TestNG-t úgy tervezték, hogy lefedjen minden tesztkategóriát:
egység, funkció, végponttól-végpontig, integrációs, stb.
Weblap:
* https://testng.org/
Szükséges legalább Java 11.
===== Szükséges =====
A következő programozói könyvtárakra van szükség:
* jcommander-x.y.jar
* slf4j-api-x.y.z.jar
* testng-x.y.z.jar
A 7.8.0-ás testng számára, 1.7.36-os slf4j-api szükséges.
Letölthető a következő helyekről:
* https://central.sonatype.com/ (2023)
* keresőbe: testng
* testng > Versin > Browse > testng-7.8.0.jar
* https://mvnrepository.com/ (2023, Maven, Gradle buildekhez)
===== VSCode =====
Bővítmény:
* Test Runner for Java (minimum Java 11)
==== Tesztkönyvtár ====
Tesztkönyvtárnak vegyünk fel a projekt gyökérkönyvtárában egy test nevű könyvtárat, benne
tetszőleges néven egy .java kiterjesztésű fájlt.
* test/TestPelda.java
app01/
|-src/
| `-App.java
`-test/
`-TestPelda.java
==== Class path beállítások ====
Ha már létrehoztuk a test könyvtárat és benne egy .java kiterjesztésű fájlt, például:
* test/TestPelda.java
A projekt osztályútvonalaihoz a test könyvtár felvétele:
* Nyissunk meg egy .java kiterjesztésű fájlt.
* F1
* Java: Configure Classpath
* Sources
* Add
* test
Amiket beállíthatunk:
* projekt könyvtár
* forrás könyvtárak (src, test)
* kimenet célkönyvtár (bin)
* JDK Runtime
* Hivatkozott könyvtárak
==== Beállítás másként ====
Ha már létrehoztuk a test könyvtárat és benne egy .java kiterjesztésű fájlt, például:
* test/TestPelda.java
Az EXPLORER-ben a test könyvtáron jobb egér gomb, majd:
* Add Folder to Java Source Path
Ellenőrzésként az oldalsávon a **JAVA PROJECTS** nézetben keressük meg a **test** könyvtárat.
==== Hivatkozás programozói könyvtárakra ====
Az oldalsávon a **JAVA PROJECTS** nézetben keressük meg a következőt:
* Referenced Libraries
* Vigyük az egeret a sor felé.
* Ha megjelenik egy + felirat, kattintsunk.
* Tallózzuk ki a fenti .jar fálokat.
Alternatív megoldás, ha projekt lib könyvtárába másoljuk a .jar fájlokat.
===== True példa =====
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestTriangle {
@Test
public void testCalcAreaGoodData1() {
Assert.assertTrue(true);
}
}
===== Triangle tesztje =====
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestTriangle {
@Test
public void testCalcAreaGoodData1() {
Triangle tri = new Triangle();
double actual = tri.calcArea(30, 35);
double expected = 525;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
}
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestTriangle {
@Test
public void testCalcAreaGoodData1() {
Triangle tri = new Triangle();
double actual = tri.calcArea(30, 35);
double expected = 525;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
@Test
public void testCalcAreaGoodData2() {
Triangle tri = new Triangle();
double actual = tri.calcArea(100, 130);
double expected = 6500;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
}
===== A példányosítás kiemelése =====
import org.testng.Assert;
import org.testng.annotations.Test;
public class TestTriangle {
Triangle tri = new Triangle();
@Test
public void testCalcAreaGoodData1() {
double actual = tri.calcArea(30, 35);
double expected = 525;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
@Test
public void testCalcAreaGoodData2() {
double actual = tri.calcArea(100, 130);
double expected = 6500;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
}
===== Minden teszt előtt =====
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class TestTriangle {
Triangle tri;
@BeforeTest
public void initTriangle() {
tri = new Triangle();
}
@Test
public void testCalcAreaGoodData1() {
double actual = tri.calcArea(30, 35);
double expected = 525;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
@Test
public void testCalcAreaGoodData2() {
double actual = tri.calcArea(100, 130);
double expected = 6500;
Assert.assertEquals(actual, expected, 0.9, "Hiba!");
}
}
===== Az assertEquals =====
@Test
public void testCalcRadius_30_35() {
double actual = this.tombsug.calcRadius(30, 35);
double expected = 8.6;
double delta = 0.1;
String msg = "Hiba! A bemenő paraméter hibás!";
Assert.assertEquals(actual, expected, delta, msg);
}
Használható csak az aktuális, és az elvárt érték megadásával.
Assert.assertEquals(actual, expected);
Delta érték hozzáadása:
Assert.assertEquals(actual, expected, delta);
Üzenet hozzáadása:
Assert.assertEquals(actual, expected, msg);