JUnit – atviro kodo sistema java programų automatiniams testams kurti ir naudoti. Šia sistema galima greitai patikrinti kuriamą programą ir įsitikinti, jog nesama regresijų, testai taip pat dokumentuoja kodą parodydami kaip jis turėtų veikti. Tai ypač svarbu kai programą kuria daug žmonių.

JUnit testų vykdymo aplinka. Vienas testas nepavyko - tikėtasi 2, askaičiuota 5. Skliausteliuose sistema nurodo testo vykdymo trukmę.

JUnit[1] profesionaliame programavime yra plačiai paplitusi[2] ir tarp Java skirtų testavimo sistemų laikoma dominuojančia.[3]. Ja testuojama taip pat ir mobilių telefonų (Android) programinė įranga.[4]

JUnit sistemoje grupė giminingų testų jungiami į objektą, o kiekvienas testas yra šio objekto metodas.

Šiuo metu paplitę JUnit 3 ir naujesnė JUnit 4 versijos.

JUnit 3 redaguoti

JUnit 3 testo objekto klasė kildinama iš bendrinės „testo atvejo“ (angl test case) klasės ir paveldi iš jos inicializacijos, užbaigimo, testavimo ir prielaidų tikrinimo metodus. Patikrinimo metodai atpažįstami pagal test priešdėlį. „Sveikas pasauli“ JUnit atrodo taip:

 public class SveikasPasauli extends TestCase
 {
   public void testDuKartDu() {
     // Patikrinsim ar du kart du lygu keturi.
     assertEquals(Sandauga, 4, 2*2);
   }
 }

Testavimo metodų tokiame objekte gali būti kiek nori, jie aptinkami ir vykdomi naudojant refleksiją. Visi testavimo metodai turi prasidėti priešdėliu „test“. Kitokie (pagalbiniai) metodai, jei jų yra, testais nelaikomi ir nevykdomi.

JUnit 4 redaguoti

Naujesnėje JUnit 4 versijoje testams žymėti naudojamos pirmąkart Java 1.5 pasirodžiusios anotacijos. Anotacijomis galima pažymėti ne tik testus bet ir veiksmus kuriuos būtina atlikti pasiruošiant testavimui arba po jo.

 public class SveikasPasauli {
   // Apskaičiuosim pasiruošimo testui metu
   int keturi;

   @Before
   public void setUp() throws Exception {
      // Apskaičiuota reikšmė vėliau naudojama abiejuose testuose.
      keturi = 4;
   }

   @Test
   public void testDuKartDu() {
     Assert.assertEquals(Sandauga, keturi, 2*2);
   }

   @Test
   public void testDuPliusDu() {
     Assert.assertEquals(Suma, keturi, 2+2)
   }
 }

Naudojant JUnit 4 testų klases iš TestCase kildinti nebūtina, bet tada sunkiau pasiekiamas ankstesnis įvairių assertEquals ir panašių metodų rinkinys (Java reikalauja naudoti priešdėlį Assert).

Sudėtinga programa gali turėti dešimtis ir šimtus įvairių testų. Jie leidžia, ką nors pakeitus, per kelias minutes patikrinti ar betobulinant vieną funkciją, galimybę per neapsižiūrėjimą nebuvo sugadinta kita. Paprasčiausia rašyti testus įvairioms matematinėms funkcijoms. Sudėtingiausia testuoti grafinę sąsają tačiau rašomi testai ir jai.

Šaltiniai redaguoti