Hosting na mieru už od 5,5 Eur od spoločnosti WebSupport.sk
Sponzorovaný webhosting od WebSupport.sk


Vytváranie JUnit testov v Eclipse

rating: 29.360
03.04.2009 19:09 fofofo

V tejto časti na konkrétnom projekte v skratke opíšeme postup, ako jednoduchým spôsobom zahrnúť JUnit testovanie do projektu, aké sú odporúčania pri tvorbe testov a iné. Pripomíname, že prostredím pre vývoj je IDE Eclipse, ktoré obsahuje podporu pre JUnit testovanie.

Spôsobov zahrnutia JUnit testov do projektu je viacero, snažili sme sa zvoliť si ten čo najjednoduchší. Je potrebné aplikovať nasledovné kroky:

1. Použitie junit-4.5.jar:

A. stiahnutie junit-4.5.jar a umiestnenie do adresára /lib projektu v prostredí Eclipse

B. cez vlastnosti projektu v časti Java Build Path vyberieme „Add External JAR“ a nastavíme cestu k junit-4.5.jar

2. Odporúčanie: „Kde do projektu umiestniť testy“:

Odporúča sa vytvoriť pre testovacie triedy zvlášť balík (iný adresár) nazvaný test, do ktorého umiestnime všetky „podbalíky“ v takej štruktúre, ako je to v balíku src alebo source. Obrázok znázorňuje 2 hlavné balíky: src a test, pričom v adresári test je štruktúra balíkov začínajúca na test a zodpovedá štruktúre balíkov v adresári src (na obrázku balíky test.mejdahed a test.ulozisko). Ako už bolo spomenuté, platí, že pre každú triedu bude existovať 1 trieda testovacia (na obrázku triedy DataStorageTest.java a UloziskoDatTest.java).

junit v eclipse

Ukážka štruktúry projektu – umiestnenie testovacích tried

 Význam takejto štruktúry:

Je možné taktiež pristupovať iným alternatívnym spôsobom k umiestneniu testovacích tried. Napríklad tak, že umiestnime testovacie triedy tam, kde je aj zdrojový kód aplikácie. Oproti predošlému prístupu budeme môcť testovať aj metódy s prístupovými právami typu: private. Výhody nášho použitého a aj odporúčaného prístupu sú tieto:

1. Tým, že oddelíme zdrojový kód od testovacieho kódu, sme nútení využívať na testovanie správania sa, respektíve rozhrania, ktoré trieda poskytuje, iba public metódy

2. Tým zároveň otestujeme, do akej miery máme správne navrhnutú architektúru (konštrukciu) aplikácie, keďže takýto spôsob testovania do určitej miery odzrkadľuje správanie sa klienta

3. Odporúčanie: voľba názvov tried a metód

Konštrukcia názvu triedy: 

BindComposabilityMedjahedFilter – - - > BindingComposabilityFilterTest 

Konštrukcia názvu metódy: 

Názov testovacej metódy bude pozostávať týchto 2 častí:

1. názov správania
2. názov situácie alebo stavu, alebo prípadu (case!), na ktorom je správanie odtestované


public void filter() – - - > public void testFilter_standardInput()
 

4. Odporúčanie: vytvorenie tela metódy - Ukážka jednoduchého testu 


Okrem samotnej testovacej metódy sa v tele testovacej triedy nachádzajú už spomínané triedy: setUp a tearDown. Ich význam v diplomovom projekte, a teda aj celkový význam týchto metód je uvedený pod obrázkom. Obrázok je ukážkou tela týchto 3 metód a je príkladom jednoduchého testu.

junit v eclipse


Ukážka jednoduchého testu

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:EN-US; mso-fareast-language:EN-US;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:2016951305; mso-list-type:hybrid; mso-list-template-ids:-270622478 1188335612 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-tab-stop:36.0pt; mso-level-number-position:left; text-indent:-18.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

Význam setUp()

 

Ak chceme testovať povedzme viac metód jednej triedy a tieto metódy využívajú tie isté testovacie údaje, vzniká duplicitný kód. Riešenie spočíva v inštanciovaní všetkých fieldov (zo static do non-static) a presunutí tejto inicializácie z testovacích metód do metódy setUp. Prečo? Lebo po spustení testovania dochádza pri vykonaní jednej testovacej metódy zakaždým k vytvoreniu novej inštancie testovacej triedy a zároveň platí, že metóda setUp je spustená pred každým spustením testovacej metódy. Inicializácia teda prebehne v poriadku.

 

Význam tearDown()

 

Vykoná sa zakaždým po ukončení ktoréhokoľvek testu. Zväčša určená na nastavovanie upratanie (nastavenie hodnôt premenných na null a podobne).

 

5. Odporúčanie: Zjednodušenie tvorby testov pri podobnom správaní testovaných metód

 

Ak testované metódy a triedy majú rovnaké správanie (rovnaké vstupy a výstupy), pre urýchlenie tvorby testov a odstránenie duplicity je možné urobiť nasledovné:

 

  1. vytvoriť o jednu triedu naviac, ktorá bude abstraktná a bude obsahovať všetky tri metódy (setUp, test, tearDown), pričom všetky testovacie triedy budú dediť od tejto triedy
  2. vytvoriť jednu abstraktnú metódu, ktorá bude vracať inštanciu dcérskej triedy. Na obrázku je to metóda: vratFilter().
  3. v metóde setUp bude implementované získanie konkrétnej inštancie, z ktorou sa v ďalšej časti programu bude pracovať (v metódach test a tearDown)
  4. vytvoriť dedenie pomocou klauzule extends v testovacích triedach so spoločným správaním plus implementovať metódu vratFilter(), ktorá vracia konkrétnu inštanciu dcérskej triedy (obrázok: Ukážka dcérskej triedy)

junit v eclipse

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:EN-US; mso-fareast-language:EN-US;} @page Section1 {size:612.0pt 792.0pt; margin:70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

Ukážka časti abstraktnej triedy

junit v eclipse

<!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:EN-US; mso-fareast-language:EN-US;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:35.4pt; mso-footer-margin:35.4pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->

Ukážka dcérskej triedy

Diskusia

Napíš priamu reakciu Napíš priamu reakciu
  • vytlač vytlač
  • vytlač kontaktuj používateľa
  • zvýš rating zvýš rating

fofofo
fofofo
(rating: 22.815)

rád si zahrám to čo si nakódim

    TOP uchádzači
  1. xsound
          rating: 999.425
  2. birdo
          rating: 984.496
  3. Jumbo
          rating: 568.683
  4. Plechi
          rating: 236.368
  5. fuBoo
          rating: 78.710
  6. telra
          rating: 49.981
  7. janci
          rating: 46.975
  8. alphadog
          rating: 38.765
  9. pyotr
          rating: 36.060
  10. sekino
          rating: 27.351

celý rebríček

sportacko.skpcrevue.sk

O projekte | Napíšte nám | Podmienky používania | RSS
© od 2008 weboit.sk,