Sunteți pe pagina 1din 4

25.1.

2014

JUnit [Programare Orientat pe Obiecte]

Programare Orientat pe Obiecte

JUnit
Responsabil: Cristina Coman Data publicrii: 3.11.2013 Data ultimei modificri: 4.11.2013

Obiective
Scopul acestui laborator este familiarizarea studenilor cu noiunea de Unit Testing i folosirea unui framework Junit pentru realizarea testrii.

Unit testing
Unit testing-ul s-a impus n ultima perioad n dezvoltarea proiectelor scrise n limbajul Java i nu numai, pe msura apariiei unor utilitare gratuite de testare a claselor, care au contribuit la creterea vitezei de programare i la micorarea drastic a numrului de bug-uri. Printre avantajele folosirii framework-ului JUnit se numr: mbuntirea vitezei de scriere a codului, concomitent cu creterea calitii acestuia clasele de test sunt uor de scris i modificat pe msur ce codul surs se mrete, putnd fi compilate mpreun cu codul surs al proiectului. clasele de test JUnit pot fi rulate automat (n suit), rezultatele fiind vizibile imediat. clasele de test mresc ncrederea programatorului n codul surs scris i i permit s urmreasc mai uor cerinele de implementare ale proiectului testele pot fi scrise naintea implementrii, fapt ce garanteaz nelegerea funcionalitii de ctre dezvoltator

JUnit
Reprezint un framework de Unit Testing pentru Java.

Exemplu
Student.java
p u b l i cc l a s sS t u d e n t{ p r i v a t eS t r i n gn a m e ; p r i v a t eS t r i n ga g e ; p u b l i cS t u d e n t ( S t r i n gn a m e ,S t r i n ga g e ){ s u p e r ( ) ; t h i s . n a m e=n a m e ;
http://elf.cs.pub.ro/poo/laboratoare/junit 1/4

25.1.2014

JUnit [Programare Orientat pe Obiecte]

t h i s . a g e=a g e ; } p u b l i cS t r i n gg e t N a m e ( ){ r e t u r nn a m e ; } p u b l i cv o i ds e t N a m e ( S t r i n gn a m e ){ t h i s . n a m e=n a m e ; } p u b l i cS t r i n gg e t A g e ( ){ r e t u r na g e ; } p u b l i cv o i ds e t A g e ( S t r i n ga g e ){ t h i s . a g e=a g e ; } }

Grupa.java
i m p o r tj a v a . u t i l . A r r a y L i s t ; i m p o r tj a v a . u t i l . L i s t ; p u b l i cc l a s sG r u p a{ L i s t < S t u d e n t >s t u d e n t s ; G r u p a( ){ s t u d e n t s=n e wA r r a y L i s t < S t u d e n t > ( ) ; } p u b l i cL i s t < S t u d e n t >g e t S t u d e n t s ( ){ r e t u r ns t u d e n t s ; } p u b l i cv o i ds e t S t u d e n t s ( L i s t < S t u d e n t >s t u d e n t s ){ t h i s . s t u d e n t s=s t u d e n t s ; } p u b l i cv o i da d d S t u d e n t ( S t u d e n ts t u d e n t ){ s t u d e n t s . a d d ( s t u d e n t ) ; } p u b l i cS t u d e n tg e t S t u d e n t ( S t r i n gn a m e ){ f o r( S t u d e n ts t:s t u d e n t s ){ i f( n u l l! =s t . g e t N a m e ( )& &s t . g e t N a m e ( ) . e q u a l s ( n a m e ) ){ r e t u r ns t ; } } r e t u r nn u l l ; } p u b l i cb o o l e a na r e S t u d e n t s I n G r o u p ( ){ i f( s t u d e n t s . s i z e ( )= =0 ){ r e t u r nf a l s e ; } r e t u r nt r u e ; } }

Test.java
http://elf.cs.pub.ro/poo/laboratoare/junit 2/4

25.1.2014

JUnit [Programare Orientat pe Obiecte]

i m p o r to r g . j u n i t . A s s e r t ; i m p o r to r g . j u n i t . B e f o r e ; p u b l i cc l a s sT e s t{ p r i v a t eG r u p ag r u p a ; @ B e f o r e p u b l i cv o i ds e t u p ( ){ g r u p a=n e wG r u p a ( ) ; } @ o r g . j u n i t . T e s t p u b l i cv o i dt e s t N o S t u d e n t I n G r o u p ( ){ A s s e r t . a s s e r t E q u a l s ( f a l s e ,g r u p a . a r e S t u d e n t s I n G r o u p ( ) ) ; } @ o r g . j u n i t . T e s t p u b l i cv o i dt e s t A d d S t u d e n t ( ){ S t u d e n ts t=n e wS t u d e n t ( " E l e n a " ," 1 1 " ) ; g r u p a . a d d S t u d e n t ( s t ) ; A s s e r t . a s s e r t T r u e ( g r u p a . g e t S t u d e n t ( " E l e n a " ) . e q u a l s ( s t ) ) ; } }

Observaii: fiecare metod de test are adnotarea: @ T e s t metodele s e t U p (avand adnotarea: @ B e f o r e ) si t e a r D o w n (@ A f t e r ) se apeleaz nainte, respectiv dup fiecare test. Se ntrebuineaz pentru iniializarea/eliberarea resurselor ce constituie mediul de testare, evitndu-se, totodat, duplicarea codului, i respectndu-se principiul de independent a testelor. pentru compararea rezultatului ateptat cu rezultatul curent se folosesc apeluri a s s e r t :
a s s e r t T r u e a s s e r t F a l s e a s s e r t E q u a l s a s s e r t N u l l /a s s e r t N o t N u l l

Rulare teste : Click dreapta clas test Run as Junit test Rulare test: Selectare test click dreapta Run as Junit test n cadrul laboratorului vom folosi framework-ul Junit adaugand fisierul jar [http://sourceforge.net/projects/junit/files/latest/download] cu acesta la proiectele create. Pentru a importa un jar ntr-un proiect din eclipse parcurgei urmtorii pai: click dreapta proiect Build path Configure build path Libraries Add jars (Add external jars)

Exerciii
1. (5p) Creai clasa o clasa
A n i m a li

clasa

Z o o . Clasa Z o oconine

un vector de animale. Implementai metodele:

a d d A n i m a l ( A n i m a la ) ,r e m o v e A n i m a l ( A n i m a la ) ,b o o l e a na r e A n i m a l s ( ) ,g e t A n i m a l s ( ) ,s i z e ( ) . Creai

vei verifica diverse scenarii: (1p) La rularea fiecrei metode veti instania clasa Z o o . (1p) Metoda t e s t A d d A n i m a l- adaug un obiect A n i m a li verific daca adugarea a avut loc cu succes. Folosii: a s s e r t E q u a l s (1p) Metoda t e s t R e m o v e A n i m a l- folosii a s s e r t T r u e (1p) Metoda t e s t A r e A n i m a l s I n Z o o- testul pic dac metoda returneaz f a l s e . Hint : A s s e r t . f a i l ( )
3/4

T e s tunde

http://elf.cs.pub.ro/poo/laboratoare/junit

25.1.2014

JUnit [Programare Orientat pe Obiecte]

(1p) Metoda t e s t G e t A n i m a l s- adugai dou obiecte A n i m a l . Verificai ca adugarea a avut loc cu succes. Folosii assertFalse . 2. (5p) Acest exerciiu urmrete identificarea unor cazuri de test, strict pe baza specificaiei, n absena accesului la codul surs i a cunoaterii modului intern de funcionare a sistemului. Se consider o clasa G e o m e t r i c F o r m s avand un constructor ce primeste un String ce poate fi unul din valorile enum-ului F o r m s . Adugai n build path-ul proiectului clasele din scheletul de laborator. Metodele i s T r i a n g l e ,i s C i r c l esi i s R e c t a n g l eau drept scop evaluarea strii obiectului G e o m e t r i c F o r m s . Creai un scenariu de testare pentru aceast clas, prin implementarea propriilor cazuri de testare, ntr-o clas G e o m e t r i c F o r m s T e s t . Construii teste specializate, orientate pe o anumit funcionalitate. De exemplu, n cadrul unui test, verificai doar una din cele 3 metode.
p u b l i ce n u mF o r m s{ T R I A N G L E ,C I R C L E ,R E C T A N G L E }

Resurse
Schelet Soluii Junit download [https://github.com/junit-team/junit/wiki/Download-and-Install]
laboratoare/junit.txt Last modified: 2013/11/06 01:04 by Adriana Draghici

http://elf.cs.pub.ro/poo/laboratoare/junit

4/4

S-ar putea să vă placă și