JAVA Unit testing Java, zimní semestr

Podobné dokumenty
JAVA Unit testing Java, zimní semestr

JAVA V Hibernate Java, letní semestr

JAVA. Java Management Extensions JMX

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

GUI. Systémová integrace pro desktopové aplikace

Základy programovaní 3 - Java. Unit testy. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. 26.,27.

Iterator & for cyklus

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

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

KIV/PIA 2013 Jan Tichava

Struktura třídy, operátory, jednoduché algoritmy, junit. Programování II 2. cvičení Alena Buchalcevová

Michal Podzimek

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

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

9. Ladění a testování programů. booleovský výraz

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

GUI. Systémová integrace pro desktopové aplikace

Pokročilé programování na platformě Java. Úvod

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

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

Java Enum Java, zimní semestr ,2017 1

Tvorba informačních systémů

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

Spring framework 2.0. Roman Pichlík CZJUG

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

Technology Entry form Entry up-to-date? Internal links Faulty internal Possible internal links

Podmínky na zápočet. Java, zimní semestr

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

(Enterprise) JavaBeans. Lekce 7

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

Klíčová slova: OOP, konstruktor, destruktor, třída, objekt, atribut, metoda

JAVA JavaBeans Java, letní semestr 2018

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Reaktivní programování v.net

JAVA JavaBeans Java, letní semestr

Testování software. Jaroslav Žáček

Projekty pro výuku programování v jazyce Java

Semináˇr Java X J2EE Semináˇr Java X p.1/23

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

Java testovací třída

JAVA. Odbočka: Návrhové vzory (Design patterns)

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Statická analýza kódu - za kód bez chyb

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Java a Caché IV: Manipulace s objekty

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

GUI. JavaFX. Java UI, letní semestr 2017/2018 1

Úvod do programovacích jazyků (Java)

Principy objektově orientovaného programování

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

Anywhere - IT-break. Milan Lempera UnitTest.cz

1. Programování proti rozhraní

Java/QE Akademie - Osnova

Semin aˇr Java N astroje Radek Koˇc ı Fakulta informaˇcn ıch technologi ı VUT Bˇrezen 2012 Radek Koˇc ı Semin aˇr Java n astroje 1/ 42

NOVINKY V JEE EJB 3.1. Zdeněk Troníček Fakulta informačních technologií ČVUT v Praze

UJO Framework. revoluční architektura beans. verze

GWT pro pokročilé. MoroSystems, s.r.o. Pavel Klobása. Senior Java Developer.

Návrh softwarových systém. Návrh softwarových systémů

(JME) Vybrané partie z jazyka Java (NPRG021) Jiří Tomeš

Java Výjimky Java, zimní semestr

Technologie Java. Jaroslav Žáček

JAVA V Assertions Java, zimní semestr

Pokročilé programování na platformě Java. Úvod

FG Forrest, a.s. Jan Novotný. Automatické testování v praxi 2.

Testování software. Jaroslav Žáček

Algoritmizace a programování

Návrhové vzory Tvorba objektů

Softwarové komponenty a Internet

Architektury informačních systémů

Agenda. Smysl teoretických cvičení Klasifikace Obecná pravidla Bugzilla Klasické problémy Poznámky k jednotlivým pojmům Antipatterns Testování testů

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

Úvod. Petr Aubrecht (CA) Martin Ptáček (Wincor Nixdorf) Je 10 typů lidí: ti, kteří znají binární kód, a ti, kteří ne.

Generické typy. Podrobněji: The Java Language Specification ( Third Edition ) , 18

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

Agenda. Opakování Manuální testování Automatické testování Antipatterns Testování testů Pokud zbyde čas. Užitečné nástroje

Java [džava] nebo [džáva] v americkém slangu "kafe" Sun Microsystems nyní Oracle

Code Contracts. Robert Haken [MVP ASP.NET, MCT] Software architect, Owner at HAVIT, s.r.o. knowledge-base.havit.cz

NPRG031 Programování II 1 / :25:46

10 Balíčky, grafické znázornění tříd, základy zapozdření

Komponenty v.net. Obsah přednášky

Ant aneb Ferda Mravenec, práce všeho druhu

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

Testování SOA systémů v Oracle SOA Suite

Platformy NetBean a Eclipse. Úvod

PA165: Úvod do Java EE. Petr Adámek

Testování, ladění a dokumentace programů

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.

Java efektivně. Lukáš Zapletal liberix.cz. Pokročilejší techniky programování v Javě

Platformy / technologie. Jaroslav Žáček

PB161 Programování v jazyce C++ Přednáška 7

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

PB161 Programování v jazyce C++ Přednáška 7

O Apache Derby detailněji. Hynek Mlnařík

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

Architektury informačních systémů

Základy objektové orientace I. Únor 2010

George J. Klir. State University of New York (SUNY) Binghamton, New York 13902, USA

Tvorba informačních systémů

Transkript:

JAVA Unit testing

Úvod unit testing testování malý jednotek funkčnosti jednotka nezávislá na ostatních testování zcela oddělené vytvářejí se pomocné objekty pro testování kontext typicky v OO jazycích jednotka ~ metoda ideálně unit testy pro všechny jednotky v programu typicky v OO jazycích pro všechny public metody

Test-driven development začít s testy Zdroj: https://commons.wikimedia.org/wiki/file:tdd_global_lifecycle.png#/media/file:tdd_global_lifecycle.png

JUnit podpora pro unit testing v Javě http://www.junit.org/ používání založeno na anotacích starší verze založeny na dědičnosti a jmenných konvencích mírně odlišné použití u různých verzí 5, 4, 3

Používání testovací metody označeny anotací @Test JUnit se spustí na množinu tříd najde v nich metody označené @Test ty provede další anotace @BeforeEach (@Before) metoda prováděná před každým testem určeno pro přípravu prostředí @AfterEach (@After) metoda provádění po každém testu určeno pro úklid @BeforeAll (@BeforeClass) metoda prováděná před všemi testy na dané třídě @AfterAll (@AfterClass) metoda prováděná po všech testech na dané třídě

Příklad public class SimpleTest { private Collection collection; @BeforeAll public static void onetimesetup() { // one-time initialization code @AfterAll public static void onetimeteardown() { // one-time cleanup code @BeforeEach public void setup() { collection = new ArrayList(); @AfterEach public void teardown() { collection.clear(); @Test public void testemptycollection() { asserttrue(collection.isempty()); @Test public void testoneitemcollection() { collection.add("itema"); assertequals(1, collection.size());

Assert asserttrue assertfalse assertequals assert... statické metody na org.junit.jupiter.api.assertions (org.junit.assert) ověřování podmínek v testech test selže pokud assert... selže assert...() vyhodí AssertionError obecně test je splněn, pokud metoda skončí normálně test není splněn, pokud metoda vyhodí výjimku

Testování výjimek jak otestovat správné vyhazování výjimek? assertthrows(indexoutofboundsexception.class, () -> { new ArrayList<Object>().get(0); ); ve starších verzích @Test(expected= IndexOutOfBoundsException.class) public void empty() { new ArrayList<Object>().get(0);

Spouštění testů z kódu org.junit.runner.junitcore.runclasses(testclass1.class,...); z příkazové řádky java -jar junit.jar select-class TestClass1 z Antu task junit <junit printsummary="yes" fork="yes" haltonfailure="yes"> <formatter type="plain"/> <test name="my.test.testcase"/> </junit> z Mavenu mvn test z IDE

TestNG http://testng.org/ inspirováno JUnit frameworkem mírně jiné vlastnosti původně dnes skoro stejné základní použití je stejné

Java Reactive programming

Reactive programming (RP) datové toky a šíření změn v programu změny v datech se automaticky propagují publisher-subcriber architektonický vzor jeden z konkrétních modelů pro RP publisher produkuje data subsciber asynchronně data zpracovává mezi P a S můžou být procesory transformující data Publisher Publisher proud dat Subscriber Subscriber proč RP jednodušší kód, efektivnější, rozšíření stream API

Publisher-Subsriber v Javě Flow API (Reactive streams) java.util.concurrent.flow od Java 9 Publisher Publisher požadavek na N elementů N elementů Subscriber Subscriber kombinace iterátoru a Observer vzoru

Flow API @FunctionalInterface public static interface Flow.Publisher<T> { public void subscribe(flow.subscriber<? super T> subscriber); public static interface Flow.Subscriber<T> { public void onsubscribe(flow.subscription subscription); public void onnext(t item) ; public void onerror(throwable throwable) ; public void oncomplete() ; public static interface Flow.Subscription { public void request(long n); public void cancel() ; public static interface Flow.Processor<T,R> extends Flow.Subscriber<T>, Flow.Publisher<R> {

Flow API SubmissionPublisher implementuje Publisher interface asynchronně publikuje dodaná data konstruktor bez parametrů používá ForkJoinPool.commonPool() další konstruktory parametr pro exekutor metody subscribe(flow.subscriber<? super T> subscriber) submit(t item)...

Observer pattern objekt (observer) sleduje druhý objekt (observable) pokud se druhý objekt změní, upozorní všechny sledovatele java.util.observer java.util.observable pozor od Java 9 jsou Deprecated (nahrazeny Flow) Observable +addobserver() +notifyobservers() update +update() Observer použití UI Observable UI komponenty Observer reakce na UI události 16

Java Ještě k vláknům

ThreadLocal vlastní kopie pro každé vlákno obvykle se používají jako statické atributy metody T get() protected T initialvalue() void remove() void set(t value) static <S> ThreadLocal<S> withinitial(supplier<? extends S> supplier)

Java Pokračování...

Kam dál... NPRG021 Pokročilé programování na platformě Java LS 2/1 obsah Reflection API, Classloaders, Security Generické typy, anotace RMI JavaBeans Java Enterprise Edition: EJB, Servlets, Java Server Pages, Spring,... Java Micro Edition: Java pro mobilní a Embedded systémy, CLDC, MIDP, MEEP RTSJ, Java APIs for XML, JDBC, JMX,... Android částečně povinné pro NPRG059 Praktikum z pokročilého objektového programování povinný předmět pro některé Mgr. okruhy NPRG044 GUI v Javě Swing, JavaFX NetBeans, Eclipse, IDEA

Java, zimní semestr Verze prezentace 2017 J13.cz.2017.01 Tato prezentace podléhá licenci Creative Commons Uveďte autora-neužívejte komerčně 4.0 Mezinárodní License. 21