Zpět na blog
Vzdělávání

Testování Java aplikací s JUnit

Skillmea
28.11.2019
5 minut čtení
Testování Java aplikací s JUnit

JUnit framework úvod

Představ si naprosto jednoduchou metodu, která má za úkol spočítat dva vstupní parametry metody.
public static int sum(int number1, int number2){
    return number1 + number2;
}
Jak bys otestoval tuto metodu? Zavolal bys danou metodu, a následně bys výsledek porovnal s očekávanou hodnotou. Pokud by metoda nevrátila očekávanou hodnotu, tak bys napsal hlášku, že test neprošel, pokud by vrátil očekávanou hodnotu, tak bys napsal, že test prošel.
int sumNumber = sum(1, 4);
if(sumNumber!=5){
    System.err.println("Test failed.");
}else{
    System.out.println("Test passed.");
}
Co jsem udělal, je to, že náš kód jsem porovnal s jedním možným případem výsledku. Anglicky se setkáš s názvem test case. Tedy jsem zatím udělal jeden test case.
Ty bys měl ověřit několik test časů. Svůj kód musíš vystavit „stresu“. Tedy si napíšeš několik dalších test časů. Například, jak to bude pracovat s nulou:
int sumNumber = sum(1, 0);
if(sumNumber!=1){
    System.err.println("Test failed.");
}else{
    System.out.println("Test passed.");
}
Nebo jak to bude pracovat s negativním číslem:
int sumNumber = sum(1, -10);
if(sumNumber!=-9){
    System.err.println("Test failed.");
}else{
    System.out.println("Test passed.");
}
Toto byly takzvané pozitivní testy. Test si považoval za passed – za úspěšný – tehdy, když byla splněna podmínka. Ty umíš ale napsat i takzvané negativní testy. Kde test prošel, pokud nebude splněna podmínka. Například test projde-li částek 2 a 2 není 5 a podobně.
int sumNumber = sum(2, 2);
if(sumNumber!=5){
    System.out.println("Test passed.");
}else{
    System.err.println("Test failed.");
}
Náš kód jsme vystavili různým testům casem. Pokud testy projdou, tak metoda je ošetřena určitě víc – je více spolehlivá než kdybychom nenapsali, žádný test case.

Co jsme udělali?

Připravili jsme si testy. Poskytli jsme vstupní parametry testům – různá čísla ke spočítání. Spustili jsme testy a poskytli jsme také očekávané výsledky. Následně jsme vypsali hlášky, zda testy prošly nebo ne.

Pokud bychom měli další metody, které bychom museli otestovat, pak bychom napsali další testy. Udělali bychom vlastně tytéž kroky jako při testování první metody.

Co mají první testy odlišné od druhých testů? Voláme jiné metody, máme jiné parametry testů a máme jiné požadované výsledky.

Co mají první testy společného s druhými testy? Testy jsme spustili – ke spuštění testů není nic odlišného. Verifikovali jsme výsledky – verifikování proběhlo iv prvním i druhém případě a následně se v obou případech napsaly hlášky na konzoli.

JUnit framework nám usnadní způsob, jakým budeme spouštět testy a také způsob, jakým se uživateli sdělí výsledky testů. Spuštění, verifikování a vypsání hlášek bude řídit JUnit framework. My řekneme JUnitu – tady máš můj test kód a ty ho teď spusti a postarej se o to. JUnitu řekneme, tento výsledek očekávám, tyto údaje vkládám - prověřit to. JUnit to prověří a nám sdělí v pěkné čitelné formě, zda testy prošly a pokud neprošly, tak nám řekne přesně, které testy neprošly.
JUnit byl mnoho let ve verzi 4. Verze 5 není přímo kompatibilní s verzí 4, ale tvůrci JUnit 5 připravili api, přes kterou umíme komunikovat i se starými testy – ta se jmenuje Vintage. Dále nové api se jmenuje Jupiter. Tyto api pak spoléhají na core frameworku – tedy zdroj – kód, který se stará o všechno ostatní. Spouštění testů a podobně. Plus máš možnost napsat své vlastní api, které pak bude také využívat core frameworku.

Pokud budeš používat Jupiter plus core, tak si do projektu musíš stáhnout tyto závislosti. My budeme používat maven pro tyto účely.
Vývojová prostředí jako IntelliJ IDEA nebo Eclipse mají zabudovanou integraci s JUnit 5 frameworkem a tak můžeme testy spouštět pomocí těchto vývojových prostředí. Pokud tě toto téma zajímá víc, sleduj online kurz JUnit a TDD pro programátory.
Skillmea
🥇 Sme jednotka v online vzdelávaní na Slovensku.
Na našom webe nájdeš viac ako 300 rôznych videokurzov z oblastí ako programovanie, tvorba hier, testovanie softwaru, grafika, UX dizajn, online marketing, MS Office a pod. 
Vyber si kurz, ktorý ťa posunie vpred ⏩

Mohlo by tě zajímat

Můžeme si dnes na hodině hrát? Od záludného sluníčka k programu Scratch
Vzdělávání
27.02.2019
Skillmea

Můžeme si dnes na hodině hrát? Od záludného sluníčka k programu Scratch

„Můžeme si dnes na hodině hrát?“ To je otázka, se kterou se setkávám na hodinách během kroužků programování. Když jsem začínal s učením, velmi mě trápilo, jaký postoj zaujmout k žákům. Představoval jsem si různé katastrofické scénáře, když žáci začnou dělat nezbedu od odmlouvání až po demolování učebny. Jak napomenout děti? Jak zpacifikovat rošťáky? Jak je donutit spolupracovat? Jak se odprezentovat, abych nebyl za hlupáka? Jak jim správně vysvětlit látku? A to nejdůležitější: Jak se postavit před dav lidí, který vám v lepším případě věnuje pozornost, a být schopen ze sebe vysoukat smysluplnou větu? Začínal jsem se záludným sluníčkemNějaké zkušenosti jsem měl s doučováním spolužáků na vysoké škole. Pamatuji si, jak jsme trávili sobotní večery na Skype, kde jsme se snažili donutit to záludné sluníčko, aby po spuštění mělo tvar jako na zadaném obrázku. Později jsem pomáhal spolužákům pochopit, co se děje s jejich domácím úkolem. Nakonec jsem do nich tloukl schopnosti jak si rozebrat zadání, naplánovat postup, aby samostatně naprogramovali zkouškový program. Nedá mi nevzpomenout, jak se mi na střední škole rozbil počítač a já jsem maturitní otázky programoval s tužkou na papíře. Co ale stálo za tím, že jsem zvládl nakreslit sluníčko a potom připravoval spolužáky na zkoušku? Byl to ten skvělý pocit, že jsem v podstatě z ničeho vytvořil funkční program, hratelnou hru, svět s vlastními postavami.[Image] Trénujeme hlavu – každý po svémPři programování si trénujeme to, co máme v hlavě. Musíme myslet i na to, že ne každý se s tím snadno popasuje. Už jsem slyšel také stížnosti od dětí, jaký je to útok na mozek. Děti rádi tráví čas u počítače. Ne každý se ale chce učit složité algoritmy. Je třeba je naučit, že počítač není jen na hraní. Je to také nástroj, který jim umožňuje projevit se. (To by se ale mohli naučit i někteří rodiče 😊.) Vedou k tomu několik cest. Když jsem poprvé otevřel prostředí Scratch, byl jsem nadšený. Prostředí mi nabízí vše, co potřebuji k vytvoření vlastního světa. Tady máš, pohraj si s tím, experimentuj, uvidíme, co z toho vznikne. Nepotřebuješ vědět složité informace, co se za tím skrývá nebo proč tomu tak funguje. Prostředí ti napoví, toto s tímto se dá spojit, a vznikne támhle... Scratch umožní uživateli vytvořit velmi rychle jednoduchou hru. Postačí mi pár kliků a už mi postavička pojídá jablíčka a připočítává skóre. Pak už to jde samé.[Image] Počítačové hry nejsou zloŽáci se těší na hry, které vytvoříme. A pak začínají přicházet otázky: „Kdy si naprogramujeme hru jako GTA V?“ Na to však musím odpovědět, že hru, kterou vytvářelo tisíc lidí několik let, si za jedno odpoledne ve Scratchi nenaprogramujeme. Když si projdeme základy, pouštíme se do skutečného programování her. Často se ptám dětí na jejich vlastní nápady, které pak spolu realizujeme. Snažím se tak v dětech podpořit kreativitu. Chci, aby přemýšleli nad vlastními schopnostmi a možnostmi prostředí Scratch. Někdo může namítat, že počítačové hry jsou zlo, které kazí dnešní mládež. Já však říkám, že existují hry, které umí dětem hodně přinést: modelování v Minecraftu, management a plánování v Total War, simulace života v Simsu, budování světů v Age of Empires.[Image] Autorem blogu je Ľuboš Jaroš Ľubošovy vzdělávací podklady ke Scratchu naleznete tu. Mgr. Ľuboš JAROŠ je absolvent magisterského stupně studia učitelství matematiky a informatiky na FMFI UK (2015). Od začátku vysokoškolského studia se věnoval didaktice programování, ať už ve školních pracích nebo při vedení kroužků programování pro žáky 1. a 2. stupně, v čemž úspěšně pokračuje dosud. Vytvořil kompletní vzdělávací podklady a videotutoriály pro programy Scratch Junior a Scratch Starter. Je autorem knihy Scratch Starter - Programování pro děti (2017). 3 roky na vyžádání vede hodiny didaktiky pro učitele informatiky. Jeho oblíbeným pracovním nástrojem je programovací prostředí pro děti s názvem Scratch.
5 způsobů jak rozvíjet své dítě a nezakazovat mu počítač
Vzdělávání
18.02.2019
Skillmea

5 způsobů jak rozvíjet své dítě a nezakazovat mu počítač

Často dnes vidíme tristní obraz dětí, jako v tmavém koutku v záři displeje svého mobilu, tabletu nebo počítače prosedí celé hodiny a baví se na příbězích svých reálných či virtuálních kamarádů ve fiktivních světech. Až se zdá, že počítačové hry a multimédia jsou pro děti přitažlivější než cokoli jiného. Proč se to děje? Podle vědeckých výzkumů jsme to my sami, kdo vědomě či nevědomě už v útlém věku, učíme děti zpracovávat informace odlišným způsobem než celé generace před námi. Silné podněty a rychlé tempo vjemů z elektronických médií povzbuzují v mozku vylučování hormonu odměny dopaminu, a tím ovlivňují jeho kognitivní funkce. Člověk má sklony tyto zážitky opakovat, vyhledávat nové a silnější podněty, čímž se roztáčí „dopaminová spirála“. V současnosti se s tímto problémem boří množství rodičů a vychovatelů. Pokud chceme, aby naše děti udělaly i něco ve svůj prospěch a svou budoucnost, potřebujeme tyto silné podněty nejprve „přebít“, a tak si získat jejich pozornost. Pak bychom však měli postupně zjemňovat „nátlak“ a tříbit výdrž a vnímavost. Nabízím vám několik inspirací, které mají potenciál děti zaujmout a pobavit – aniž by prohlubovaly svou závislost na médiích. Naopak získají radost, zvýší kontakt s vrstevníky, vytříbí si vnímavost i pohybové dovednosti. Efektivně také sníží závislost na levných náhradách ze světa zábavního průmyslu.[Image] 1. Dejte křídla kreativitěDnes je trendem konzumace obsahu. Podobně jako při pojídání i tady to můžeme uchopit z opačné strany a „uvařit si“ něco vlastního. Díky všudypřítomným technologiím máme mnoho možností. Natočit mobilem vlastní krátký hraný, animovaný, přírodopisný film či televizní reportáž? Ke zpracování materiálu a tvorbě hudby můžeme využít volně dostupné aplikace v online obchodech. Podobně umíme vyrobit hudbu (napr. Chrome Music Lab) a jako bonus i plakát na premiéru (Office), případně is vlastnoručně kreslenou grafikou (napr. Photopea). Můžeme také natočit i veselé video (s porouchanými záběry) o tom, jak to celé vznikalo. A máme ideální příspěvek do rodinné videotéky! 2. StavebniceStavebnice jsou ideální prostředek pro konstruktivní hru a experimenty. Jsou navrženy tak, že respektují intelektuální a fyzické schopnosti dětí v jednotlivých věkových kategoriích. Například elektronická stavebnice Boffin, ve které si i menší děti bez potřeby mobilu či počítače bezpečně postaví zábavné elektrické obvody. Velmi vhodné jsou stavebnice Lego Technic s názornými ozubenými převody a dalšími součástkami, které demonstrují mechanické principy. Pokud se vám zdají tyto stavebnice příliš drahé, zkuste některou z online Lego půjčoven, které se začínají vynořovat iu nás. Vrcholem této skupiny je robotická stavebnice Mindstorms, která kromě lego dílků obsahuje také senzory a řídící jednotku. S použitím vhodného kurzu vevede vás i vaše děti do světa robotiky.[Image] 3. Výzva: Naučte je programovatVyšší úroveň používání digitálních technologií je naučit se je ovládnout je přes programování. Není až tak náročné začít, pokud víte, za který konec to chytit. Děti na kurzech a v letních denních táborech, které pořádáme v Learn2Code, nás přesvědčují o tom, že když jsou správně motivovány a pod dohledem zkušeného instruktora, základy programování zvládne každé z nich. Mnoho věcí se však dnešní teenagery učí z video návodů. A není to náhoda. Video návod může do velké míry osobní doprovod instruktora nahradit. První experimenty mohou začít v Scratchi, pokračovat vlastními mobilními appkami v AppInventore nebo grafickými skice v javascriptovom prostředí P5.js. 4. Měření sil s vrstevníkyI na Slovensku existuje spousta soutěží pro děti, ve kterých si mohou měřit síly s vrstevníky. Výjimka není ani informatika. Pokud vašeho potomka zajímají hry a programování, může vyzkoušet súťaž v tvorbe hier Galaxiáda. Její druhý ročník právě probíhá. 5. Dopřejte pohyb celému těluKaždé dítě, ať už programátorské nebo ne, uvítá chvíli veselého pohybu! Nevěříte? V doprovodu zábavné počítačové hry Stepmania překoná(te) dětskou lenost. Princip hry spočívá v tom, že dotykem nohou po podložce za doprovodu populární hudby „sestřelujete“ rychle ubíhající šipky. Stepmania je k dispozici zdarma. Jediné, co k ní potřebujeme, jsou ovladače Dance Pad, které však lze v domácích či zahraničních internetových obchodech koupit již od 10 eur za kus. Hra obsahuje několik herních režimů, lze hrát samostatně, ale zábavnější je ve dvou (potřebujete dvě podložky), či dokonce na turnaji. (Na ten si účastníci nosí své vlastní podložky.) Díky těmto aktivitám vy a vaše děti zažijete radost a pocit smysluplného využití času a moderních technologií ve prospěch sounáležitosti a vnímavosti. Zároveň povzbudíte jejich zdravou sebedůvěru a získávání takových dovedností, které jistě využijí v budoucnosti. Autorem článku je Marián Staňo Marián je absolvent učitelství matematiky a informatiky na FMFI UK (2001). Od začátku studia se věnoval experimentálnímu vyučování informatiky na ZŠ a později ve škole pro děti s všeobecným intelektovým nadáním (ZŠ Košická Bratislava, Škola pro mimořádně nadané děti a gymnázium v Bratislavě, Instruktor Letního denního tábora FMFI UK). Má dvacetiletou praxi ve vzdělávání dětí jako lektor a autor vzdělávacích materiálů. Má stejně zkušenost jako facilitátor arteterapeutických skupin dospělých a hledá průniky mezi animovanou tvorbou a technologiemi.
Java nejnovější verze – Java 9 moduly (1. část)
Vzdělávání
09.12.2018
Skillmea

Java nejnovější verze – Java 9 moduly (1. část)

Od verze 9 bude java vydávána v pravidelných intervalech. Nová java každých 6 měsíců. Takže můžeme očekávat novou funkčnost častěji, ale v menších dávkách. Nejpoužívanější Java dnes je java 8 – vydaná v roce 2014. Java 9 byla poprvé vydána v září 2017, později byly opraveny kritické chyby a lze říci, že taková lepší verze byla vydána v lednu 2018. Java 10 byla vydána v březnu 2018, Java 11 v září 2018. Takže rychlý posun ve verzích, ale ne drastický posun ve funkčnosti. Co je lepší? Najednou a mnohem nebo méně a postupně? Záleží na tom, co děláte. Pokud používáte mnoho rámců a knihoven třetích stran, může být vaše práce ovlivněna po zvýšení tohoto jevu. Prvním milníkem je java 11, která je označena jako LTS, tj. dlouhodobá podpora. Tato verze tohoto jevu bude opravena na dlouhou dobu a bude o ni postaráno v následujících letech. Co to znamená? Že společnosti s větší pravděpodobností přeskočí z jevu 8 dříve na jev 11, protože si budou jisty, že tato java bude v budoucnu opravena –, pokud bude nalezena kritická chyba. V tomto článku se zaměříme hlavně na seznam nových změn. Nebudeme se zabývat jednotlivými změnami podrobně. Budeme to udržovat i v budoucnu. InstalaceNejprve musíte stáhnout a nainstalovat nejnovější fenomén jdk. V době psaní to tak je Java 11. Nastavte proměnnou prostředí JAVA_HOME na nový jev – na kořen, nikoli do složky bin. Poté nastavte cestu k proměnné PATH pouze do složky koše nově nainstalovaného jevu. Spusťte příkazový řádek a zadejte příkaz: java – verze Pokud máte verzi, vše je v pořádku.[Image] Pokud dojde k chybě nebo se zobrazí starší verze, ujistěte se, že v PATH je cesta nového fenoménu nastavena na začátku. Je možné, že v PATH máte také nastaveno C: \ ProgramData \ Oracle \ Java \ javapath. Pokud ano, musí to být za cestou k nejnovějšímu jevu. ModulyV Javě 9 je nejpříznivější změnou projekt Jigsaw –, ale stačí, když si vzpomeneme, že se jedná o divizi modularity – velkého monolitu –, takže celá aplikace v jednom balení do menších buněk – moduly. Moduly pak řeknou, co publikují světu a co požadují pro svou správnou funkčnost. Každý modul obsahuje soubor modul-info.java a alespoň jeden balíček. Module-info.java obsahuje popis závislostí, které modul potřebuje. Každý modul je nezávislý v tom, že pokud obsahuje obrázky nebo konfigurační soubory, modul je spravuje sám. Vše v modulu je pro modul soukromé, pokud neřekneme jinak. Existují 4 typy modulů.Systémové moduly – Java SE a JDK moduly –, pokud si všimnete, jdk nainstalovaný pro novější jev postrádá složku jre. Nyní jsou jmody. Zde máme všechna výchozí nastavení poskytovaná moduly.[Image] Aplikační moduly jsou moduly, které chceme vytvořit, když se rozhodneme, že chceme moduly používat. Automatické moduly je vytvořen, když do modulu cesty přidáme soubory JAR. Název modulu je převzat z názvu souboru. Tyto automatické moduly mají plný přístup ke všem ostatním modulům načteným na cestě. Nepojmenovaný modul = pokud jsou některé třídy nebo soubory jar načteny na cestě –, tyto třídy a soubory jar jsou automaticky přidány do tohoto nejmenovaného modulu. Používá se pro zpětnou kompatibilitu s předchozím starším Javanese kódem. DistribuceModul by měl být zabalen jako jarní soubor – jeden jarní soubor by měl obsahovat maximálně jeden modul. Když provádíme projekt sestavení, musíme být opatrní, abychom každý modul v našem projektu zabalili jako samostatnou pružinu. Základní modulySlíbili jsme, že jdk má novou strukturu, která obsahuje jmoduly. Zde jsou základní moduly. Pokud zadáme příkaz, můžeme tyto moduly uvést pomocí příkazového řádku <b>java --list-modules</b>. [Image] Každý modul, který vytvoříme, použije implicitní modul java.base. Použití dalších modulů bude k dispozici po konfiguraci. Vytvoření moduluModul v podstatě vzniká, pokud definujeme soubor modul-info.java v kořenovém adresáři zdrojového kódu modulu. Tento okamžik pracuje se zdrojovým kódem jako s modulem. Moduly se navzájem nevidí – nemají přístup k sobě navzájem a ke třetímu atd. Podle toho, kolik modulů používáme. Pokud chcete použít něco zvenčí nebo chcete, aby byla viditelná vnitřek vašeho modulu nebo vnitřní čas vašeho modulu, musíte jej definovat. Pojďme mít projekt, ve kterém definujeme nový modul. V modulu máme složku src, do které vložíme veškerý zdrojový kód. Uvnitř definujeme balíček sk.jaro.demo a stále v něm vnější a vnitřní. Vytvoříme jednoduché třídy, které jen něco napíšou na konzoli.[Image] package sk.jaro.demo.external; public class HelloMainModuleExternal { public void doAction() { System.out.println ("Hello main module HelloMainModuleExternal"); } }  package sk.jaro.demo.internal; public class HelloMainModuleInternal { public void doAction() { System.out.println("Hello main module HelloMainModuleInternal"); } } Tyto třídy se liší pouze v názvu a příkazu na konzole. Později nastavíme vnitřní, aby byl viditelný pouze v hlavním modulu. Později nastavíme externí, aby byl viditelný mimo hlavní modul. Vytvořte soubor modul-info.java v src tohoto modulu. Uvnitř souboru je syntaxe, kde klíčovým slovem je nejprve modul, pak název modulu – můžete také použít tečky, a pak jsou zde složené závorky: modul nasmodule { }. Chceme, aby byl externí balíček k dispozici pro další moduly –, které budou nastaveny pro export. module main { exports sk.jaro.demo.external; }Nyní vytvoříme nový modul ve stejném projektu s názvem utils. Uvnitř budeme mít jednu třídu, ve které se pokusíme použít třídu HelloMainModuleExternal z hlavního modulu.[Image] Module-info.java musí nyní obsahovat, že v tomto modulu požadujeme hlavní modul –, protože z tohoto modulu používáme funkčnost. module utils { requires main; } Nyní můžeme použít třídy, které byly exportovány z hlavního modulu: package sk.jaro.demo; import sk.jaro.demo.external.HelloMainModuleExternal; public class UseSomethingFromMainModule { public static void main(String[] args) { HelloMainModuleExternal helloMainModuleExternal = new HelloMainModuleExternal(); helloMainModuleExternal.doAction(); } }ZávěrNakonec si s tím můžete hrát hned teď. Zkuste použít třídu, která není exportována z hlavního modulu. O modulech by bylo možné napsat a mluvit o nich, ale doufám, že pochopíte princip modularizace. Během studií na toto téma mám několik otázek, na které jsem dosud neodpověděl. Například: Maven s java modularizací? Rámce a modularizace? Pokud se vám tento článek líbil, napište něco do komentářů, budu šťastný. Zajímá vás Java? Vyzkoušejte jeden z kurzů na toto téma https://skillmea.sk. Pokud se o mně chcete dozvědět více, sledujte můj web www.jaroslavbeno.sk. jaro Zdrojové kódy ke stažení.

Nezmeškej info o nových kurzech a speciálních nabídkách