Testovací metoda. Testovací metoda. public class SimpleTest {

Podobné dokumenty
Michal Podzimek

JAVA Unit testing Java, zimní semestr

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Algoritmizace a programování

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

8 Třídy, objekty, metody, předávání argumentů metod

TÉMATICKÝ OKRUH Softwarové inženýrství

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Anotace Test. Označuje public void metodu, která může být spuštěna jako test. Parametr expected označuje vyjimku, která by měla být v metodě vyvolána

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Anotace a Hibernate. Aleš Nosek Ondřej Vadinský Daniel Krátký

Programátorská příručka

Objektové programování

PREPROCESOR POKRAČOVÁNÍ

Seminář Java II p.1/43

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Programování v Javě I. Únor 2009

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Jazyk C# a platforma.net

Programování v Javě I. Leden 2008

Enterprise Java Beans 3.0

Úvod do programovacích jazyků (Java)

WPA - Konfigurace Java EE aplikace (Maven, struktura war arch. kontejnerem Tomcat 8

public static void main(string[] args) { System.out.println(new Main().getClass().getAnnotation(Greet.class).text());

Specifikace. Odevzdání do

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

První kapitola úvod do problematiky

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 3.4.

JAVA V Hibernate Java, letní semestr

NetBeans platforma. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

UJO Framework. revoluční architektura beans. verze

Programování v C++ 3, 3. cvičení

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

<surface name="pozadi" file="obrazky/pozadi/pozadi.png"/> ****************************************************************************

3 KTE / ZPE Informační technologie

INSTALACE PRODUKTU ONTOPIA KNOWLEDGE SUITE

RMI Remote Method Invocation

Výchozí a statické metody rozhraní. Tomáš Pitner, upravil Marek Šabo

Agenda. Docházka Návrat k minulému praktickému cvičení Zápočtové práce. Dokumentace. Dotazy, přání, stížnosti. Co, jak a proč dokumentovat

3 Vývojová prostředí, základní prvky jazyka Java, konvence jazyka Java

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

Testování software. Jaroslav Žáček

Java a XML. 10/26/09 1/7 Java a XML

OSGi. Aplikační programování v Javě (BI-APJ) - 6 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

ZAŘÍZENÍ PRO VZDÁLENÝ SBĚR A PŘENOS DAT FIRMWARE

11. Přehled prog. jazyků

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Maven. Aplikační programování v Javě (BI-APJ) - 2 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Vývoj aplikací řízený testy. Miroslav Beneš

Spring framework 2.0. Roman Pichlík CZJUG

Obsah přednášky. Vývoj aplikací řízený testy. Extrémní programování (XP) Požadavky na nástroje pro XP. Testování aplikací

Testování. Zadání příkladu. Vytvoření kostry třídy. Obsah:

Základy Guice Vazby Scopes. Google Guice. základní seznámení s frameworkem Google Guice

DPKOM_06 Dědičnost entit a zpětná volání posluchači

Specifikace ASYMBO XML feedu

Doxygen. Jakub Břečka

Testování software. Jaroslav Žáček

Jini (pronounced GEE-nee) Cvičení 8 - DS 2006

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Vlákno odlehčený proces kód vlákna, zásobník privátní ostatní sdíleno s dalšími vlákny téhož procesu

zapište obslužnou metodu události Click tlačítka a vyzkoušejte chování polevýsledek.text = polečíslo1.text + polečíslo2.text;

Logování zaznamenávání informací o průběhu programu, ladících a chybových informací

Programování v C++ 2, 4. cvičení

typová konverze typová inference

PROGRAMOVÁNÍ V C++ CVIČENÍ

17. Projekt Trojúhelníky

Úvod do Groovy pro Java experty

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský

1. Webový server, instalace PHP a MySQL 13

20. Projekt Domácí mediotéka

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Vytváření a použití knihoven tříd

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Teoretické minimum z PJV

Kurz Databáze. Přechod na SQL server. Obsah. Vytvoření databáze. Lektor: Doc. Ing. Radim Farana, CSc.

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Vláknové programování část V

Programování v jazyku C# II. 5.kapitola

Django. Webový framework pro Python Projekt = webová stránka Aplikace = určitá funkcionalita webu

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++

KTE / ZPE Informační technologie

Programovací jazyk Java

Více o konstruktorech a destruktorech

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

České vysoké učení technické v Praze. Fakulta Elektrotechniky XD39NUR. Semestrální práce. Ovládání videokonferencí pomocí mobilního telefonu

Automatické testování softwaru. Testujte svůj kód! Předpoklady: Příklad: sum_digits() Možnost 1: Zkusíme funkci použít v konzoli Pythonu.

Objektově orientované programování

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

l Kontakt s klientem SSP Popis automatizované komunikace s ÚP ČR v součinnosti a exekuci

Programování v C++ 1, 5. cvičení

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

JAVA. Další jazyky kompilovatelné do Java byte-code

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

Transkript:

Testování TestNG

public class SimpleTest { @BeforeClass public void setup() { // code that will be invoked // when this test is instantiated @Test public void afasttest() { System.out.println("Fast test"); @Test public void aslowtest() { System.out.println("Slow test"); Testovací metoda Testovací metoda

public class SimpleTest { @BeforeClass public void setup() { // code that will be invoked // when this test is instantiated @Test(groups = { "fast" ) public void afasttest() { System.out.println("Fast test"); @Test(groups = { "slow" ) public void aslowtest() { System.out.println("Slow test"); Testovací skupina Testovací skupina

<test name="t1" > <classes> <class name="simpletest"> <methods> <include name="afasttest" /> </methods> </class> </classes> </test> Test

<test name="t1" > <classes> <class name="simpletest"> <methods> <include name=".*fast.*" /> </methods> </class> </classes> </test> Test

<test name="t2" > <classes> <class name="simpletest" /> </classes> </test> Test

<test name="t3"> <packages> <package name="test.sample" /> </packages> </test> Test

<test name="t4"> <groups> <run> <exclude name="fast" /> <include name="slow" /> </run> </groups> Test <classes>... </classes> </test>

<suite name="s1" verbose="1"> <test name="t1">... </test> <test name="t2">... </test> <test name="t3">... </test> </suite> Test Suite

Shrnutí Konfigurace anotacemi @Test xml souborem Granularita testovací metody ~> skupiny testovací metody / skupiny ~> testy ~> suits

@Test Označuje spustitelnou testovací metodu lze použít u celé třídy

@Test Označuje spustitelnou testovací metodu lze použít u celé třídy tzv. class-level annotation pak jsou implicitně označeny všechny public metody @Test public class SimpleTest { public void afasttest() { System.out.println("Fast test"); Testovací metoda

Jiný příklad Přidávat metody do skupiny na úrovni třídy všechny testovací metody pak patří do této skupiny @Test(groups = { "integration-test" ) public class SimpleTest { @Test(groups = { "fast" ) public void afasttest() { System.out.println("Fast test");

@Test Atributy groups enabled seznam skupin, do kterých testovací metoda patří je testovací metoda povolena? (přepínač) expectedexceptions seznam očekávaných výjimek pro testování okrajových podmínek description popisek testovací metody

Co dál umí TestNG? Sdružovat skupiny do skupin tzv. metagroups lze definovat v konfiguračním souboru tzn. skupiny ~> skupiny

Co dál umí TestNG? Závislosti mezi testovacími metodami @Test public void startserver() { System.out.println("Starting server."); @Test(dependsOnMethods = { "startserver" ) public void dosomethingwithserver() { System.out.println("Doing things on server.");

Co dál umí TestNG? Závislosti mezi testovacími metodami @Test public void startserver() { System.out.println("Starting server."); hard dependency @Test(dependsOnMethods = { "startserver" ) public void dosomethingwithserver() { System.out.println("Doing things on server.");

Co dál umí TestNG? Závislosti mezi testovacími metodami @Test public void startserver() { System.out.println("Starting server."); soft dependency @Test(dependsOnMethods = { "startserver", alwaysrun = true) public void dosomethingwithserver() { System.out.println("Doing things on server.");

Co dál umí TestNG? Závislosti mezi testovacími metodami lze definovat i závislost na skupině @Test(groups = { "init" ) public void startserver() { System.out.println("Starting server."); @Test(dependsOnGroups = { "init" ) public void dosomethingwithserver() { System.out.println("Doing things on server.");

Co dál umí TestNG? Obecnou inicializaci před testem a uklízení po testu velmi jemná granularita @BeforeSuite / @AfterSuite @BeforeTest / @AfterTest @BeforeGroups / @AfterGroups @BeforeClass / @AfterClass @BeforeMethod / @AfterMethod takto anotovaných metod může být více použijí se všechny

Co dál umí TestNG? Pouštět testy ve více vláknech <suite name="s1" parallel="methods" thread-count="5"> <suite name="s2" parallel="tests" thread-count="5"> <suite name="s3" parallel="classes" thread-count="5">

Co dál umí TestNG? Pouštět test vícekrát z různých vláken vlákna běží současně @Test(threadPoolSize = 3, invocationcount = 10) public void dosomethingwithserver() { System.out.println("Doing things on server.");

Co dál umí TestNG? Specifikovat timeout (v milisekundách) už žádné rogue testy, které blokují vlákno navždy @Test(threadPoolSize = 3, invocationcount = 10, timeout=10000) public void dosomethingwithserver() { System.out.println("Doing things on server.");

Co dál umí TestNG? Parametrizovat testy

Co dál umí TestNG? Parametrizovat testy přímo v konfiguraci jednoduché a rychlé ale méně flexibilní smíte mít jenom String parametry mohou být nepovinné anotace @Optional

Parametry testů Speciální anotace @Parameters parametry se mapují podle pořadí, ne podle jmenné konvence @Test @Parameters({ "first-name", "last-name" ) public void dosomethingwithserver( String firstname, String lastname) { System.out.println(firstName + " " + lastname + " is doing things on server.");

Parametry testů Definice hodnot parametrů v ngconfig.xml <suite name="s1"> <parameter name="first-name" value="erik" /> <parameter name="last-name" value="kratochvíl" />... </suite> <suite name="s2"> <parameter name="first-name" value="martin" /> <parameter name="last-name" value="hlavatý" />... </suite>

Co dál umí TestNG? Parametrizovat testy přes tzv. DataProvider java metoda, která vrací pole polí obsahující jednotlivé hodnoty parametrů testy se pouští opakovaně pro každý řádek parametrů velmi silný nástroj testovací data lze načítat z DB, XML prostě odkudkoli

Data Provider Speciální anotace @DataProvider metoda vrací Object[][] nebo Iterator<Object[]> @Test(dataProvider = "namesprovider") public void doespersonlive( String firstname, String lastname) {... @DataProvider(name = "namesprovider") public Object[][] providenames() { return new Object[][] { { "Erik", "Kratochvíl", { "Thales", "Milétský"

DataProvider Alternativní způsob specifikace parametrů. Použití: @Test(dataProvider = "jmeno") Zdroj dat - @DataProvider Statická metoda nebo metoda třídy, ve které je provider použit. Vrací pole polí objektů. Testy se pouští opakovaně pro každý řádek (pole parametrů) vrácený DataProviderem.

Parametry a reporty V obou případech se použité parametry stávají součástí výsledného reportu

Co dál umí TestNG? Žít s JDK 1.4 používají se anotace v JavaDoc Definovat vlastní interceptory a listenery měnit nebo monitorovat chování TestNG sledovat volání testovacích metod měnit pořadí testovacích metod "Dynamické" testování Factory vyrábí testovací třídy s danými parametry vhodné, pokud je obor hodnot parametrů velký

Bodované úkoly na zápočet

Testovací aplikace Simuluje reálný systém (není to HelloWorld) Embedded databáze Derby (nemusí vás zajímat) DAO vrstva využívající Hibernate. Celé to drží pohromadě Spring. Zajímavé jsou zdrojové kódy v adresáři test ngconfig.xml Spuštění testů Ant rozbalit zip a spustit run-tests.bat Eclipse plugin (http://testng.org/doc/eclipse.html)

Úkol 1 Spusťte všechny testy a prohlédněte si výstup v konzoli pokud používáte Eclipse plugin tak si prohlédněte i výstup v TestNG view prohlédněte si HTML výstup Zajistěte, aby se nespouštěly testy, které neprocházejí

Úkol 2 Upravte Ukol1Test tak, aby metody testvytvoraulozkategoriizbozi a testvytvoraulozdvekategoriezbozi přijímaly parametr nazev název kategorie Zajistěte korektní inicializaci parametru v ngconfig.xml stejnou, jako nyní

Úkol 3 Upravte Cviceni4Test tak, že sloučíte metody testukol1 a testukol2 do jediné nová metoda bude mít dva parametry využijte DataProvider

Úkol 4 Zjistěte pomocí TestNG zda jsou metody třídy HibernateTemplate threadsafe nápověda: třída RootTest má proměnnou ht typu HibernateTemplate využijte spouštění testů ve více vláknech

Odevzdávání Na cvičeních Mailem na frantisek.rezac@profinit.eu soubor ngconfig.xml zdrojové soubory, které jste měnili měly by to být jen Ukol1Test.java Cviceni4Test.java. deadline příští praktická cvičení

Diskuse Komentáře Otázky Připomínky Upřesnění Poznámky