====== 7. Cvičení ====== Na tomto cvičení se seznámíte s nástrojem na správu a řízení kompilace projektů Maven. Následně se naučíte pracovat s logováním pomocí java.util.logging a vytvářením unit testů pomocí frameworku JUnit. ===== Úkoly na cvičení ===== ==== Maven ==== - Seznamte se s principem fungování systému Maven - Pomocí knihoven na [[http://www.mvnrepository.com]] vytvořte jednoduché PDF, které bude obsahovat třeba jen jednoduchý text. Podivejte se třeba po balíčku ITextPDF, dokumentaci k němu naleznete na https://itextpdf.com/en/resources/api-documentation. Tutorial iText7 (odkaz 2022): https://kb.itextpdf.com/home/it7kb/examples/itext-7-jump-start-tutorial-chapter-1 Tutorial iText7 (starší odkazy): https://itextpdf.com/en/resources/books/itext-7-jump-start-tutorial-java/intro, https://itextpdf.com/en/resources/books/itext-7-building-blocks/intro Můžete používat např. balíčky https://mvnrepository.com/artifact/com.itextpdf/kernel/7.2.1 a https://mvnrepository.com/artifact/com.itextpdf/layout/7.2.1 . ==== Logging ==== {{:courses:b0b36pjv:tutorials:07:pjv-lab07.zip|Zdrojové kódy projektu v Mavenu na testování a logování jsou ZDE}}. === První úkol === Zkuste si vytvořit nový soubor ''JFrame'' Form. Po jeho spuštění se objeví prázdný ''JFrame''. Aplikace nic nedělá a jen čeká na zavření okna. Opravdu se však nic neděje? * Nápověda č.1: Prozkoumejte root logger, třeba ho využívají i jiné části aplikace (GUI) * Nápověda č.2: K handleru, který používá root loger se dostanete např. pomocí ''Logger.getLogger(“”).getHandlers()[0]'' * Nápověda č.3: Nepoužívejte ''Level.ALL'', stačí ''Level.FINE'' === Druhý úkol === Stáhněte a otevřete si ukázkový (dobře se na něm ukazuje, ne že by byl dokonalý) projekt BouncingBall. Když pominete plynulost animace, tak po chvíli hraní se může stát, že míček zapadne pod spodní okraj obrazovky. Aplikace však stále běží. Ale co se děje s míčkem? Postupuje dále do hlubin? Odráží se pořád od zdí? Co když se mu přechodem do jiné části obrátila i gravitace? A co na to Jan Tleskač? Zkuste to odhalit pomocí logovaných zpráv. Rozlište různé typy zpráv pomocí levelu. * Pozice míčku * Odraz od zdi * Změna stavu aplikace (po kliknutí na tlačítka) * //Tip: ve výpisech je lépe vidět, když má zem souřadnice y=0 (například obrácením gravitace nebo lze upravit samotný výpis)// ==== Testování ==== - Vytvořte test pro všechny metody v dodané třídě Calculator. Nezapomeňte otestovat i dělení nulou, které musí správně skončit výjimkou a test musí projít. Pokud se nepouští v JUnit5 metody označené @BeforeAll, @Before apod. Je třeba do pom.xml doplnit surefire-plugin: maven-surefire-plugin 2.19.1 org.junit.platform junit-platform-surefire-provider 1.1.0 ===== Studijní materiály ===== * [[maven|Maven]] * [[https://maven.apache.org/guides/mini/guide-multiple-repositories.html|Jak přidat další repository do Mavenu]] * [[logovani|Logování]] * [[https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html|Popis Java Logging API]] * [[testovani|Testování]] * [[https://netbeans.org/kb/docs/java/junit-intro.html|Psaní testů v Netbeans]] * [[http://www.itnetwork.cz/java/pokrocile/java-unit-testy-v-junit|Junit]]