Administrativ
Laboratoare
Tema
Teste
Resurse utile
Alte resurse
Arhiva Teme
Administrativ
Laboratoare
Tema
Teste
Resurse utile
Alte resurse
Arhiva Teme
Scopul acestui laborator este familiarizarea studenţilor cu noţiunea de Unit Testing şi folosirea unui framework Junit pentru realizarea testǎrii.
Unit testing-ul s-a impus în ultima perioadă în dezvoltarea proiectelor scrise în limbajul Java şi nu numai, pe măsura apariţiei unor utilitare gratuite de testare a claselor, care au contribuit la creşterea vitezei de programare şi la micşorarea drastică a numărului de bug-uri.
Printre avantajele folosirii framework-ului JUnit se numără:
Reprezintǎ un framework de Unit Testing pentru Java.
public class Student { private String name; private String age; public Student(String name, String age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
import java.util.ArrayList; import java.util.List; public class Grupa { List<Student> students; Grupa () { students = new ArrayList<Student>(); } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; } public void addStudent(Student student) { students.add(student); } public Student getStudent(String name) { for (Student st : students) { if (null != st.getName() && st.getName().equals(name)) { return st; } } return null; } public boolean areStudentsInGroup() { if (students.size() == 0) { return false; } return true; } }
import org.junit.Assert; import org.junit.Before; public class Test { private Grupa grupa; @Before public void setup() { grupa = new Grupa(); } @org.junit.Test public void testNoStudentInGroup() { Assert.assertEquals(false, grupa.areStudentsInGroup()); } @org.junit.Test public void testAddStudent() { Student st = new Student("Elena", "11"); grupa.addStudent(st); Assert.assertTrue(grupa.getStudent("Elena").equals(st)); } }
Observaţii:
@Test
setUp
(avand adnotarea: @Before
) si tearDown
(@After
) se apeleazǎ înainte, respectiv dupǎ fiecare test. Se întrebuinţeazǎ pentru iniţializarea/eliberarea resurselor ce constituie mediul de testare, evitându-se, totodatǎ, duplicarea codului, şi respectându-se principiul de independentǎ a testelor.assert
:assertTrue
assertFalse
assertEquals
assertNull
/assertNotNull
Pentru a importa un jar într-un proiect din eclipse parcurgeţi urmǎtorii paşi: click dreapta proiect → Build path → Configure build path → Libraries → Add jars (Add external jars)
Animal
şi clasa Zoo
. Clasa Zoo
conţine un vector de animale. Implementaţi metodele: addAnimal(Animal a)
, removeAnimal(Animal a)
, boolean areAnimals(), getAnimals()
, size()
. Creaţi o clasa Test
unde veţi verifica diverse scenarii:Zoo
.testAddAnimal
- adaugă un obiect Animal
şi verificǎ daca adǎugarea a avut loc cu succes. Folosiţi: assertEquals
testRemoveAnimal
- folosiţi assertTrue
testAreAnimalsInZoo
- testul picǎ dacǎ metoda returneazǎ false
. Hint: Assert.fail()
testGetAnimals
- adǎugaţi douǎ obiecte Animal
. Verificaţi ca adǎugarea a avut loc cu succes. Folosiţi assertFalse.GeometricForms
avand un constructor ce primeste un String ce poate fi unul din valorile enum-ului Forms
.isTriangle
, isCircle
si isRectangle
au drept scop evaluarea stǎrii obiectului GeometricForms
.GeometricFormsTest
.public enum Forms { TRIANGLE, CIRCLE, RECTANGLE }