ЈУнит је најпопуларнији оквир за тестирање јединица на Јави. Изричито се препоручује за јединствено тестирање. ЈУнит не захтева сервер за тестирање веб апликација, што убрзава процес тестирања.
ЈУнит фрамеворк такође омогућава брзо и лако генерисање тест случајева и података о тестовима. Пакет орг.Јунит састоји се од многих интерфејса и класа за ЈУнит тестирање као што су Тест, Ассерт, Афтер, Бефоре итд.
Шта је испитно тело
Пре него што схватимо шта је испитно тело, проучимо доњи код
Овај код је дизајниран за извршавање два тест случаја на једноставној датотеци.
јавна класа ОутпутФилеТест {приватни излаз датотеке;оутпут = нова датотека (…);оутпут.делете ();публиц воид тестФиле1 () {// Код за верификацију тест случаја 1}оутпут.делете ();оутпут = нова датотека (…);публиц воид тестФиле2 () {// Код за верификацију тест случаја 2}оутпут.делете ();}
Неколико издања овде
- Код није читљив
- Код није лако одржавати.
- Када је тестни пакет сложен, код може садржати логичке проблеме.
Упоредите исти код помоћу ЈУнит-а
јавна класа ОутпутФилеТест{приватни излаз датотеке;@Бефоре публиц воид цреатеОутпутФиле (){оутпут = нова датотека (…);}@Афтер публиц воид делетеОутпутФиле (){оутпут.делете ();}@Тест публиц воид тестФиле1 (){// код циља тест случаја}@Тест публиц воид тестФиле2 (){// код циља тест случаја}}
Шифра је далеко читљивија и одрживија. Горња структура кода је тестна инсталација.
Тестна инсталација је контекст у коме ради Тест Цасе. Уобичајено, тестна опрема укључује:
- Предмети или ресурси доступни за било који тестни случај.
- Потребне активности које ове објекте / ресурсе чине доступним.
- Ове активности су
- алокација ( подешавање )
- де-алокација ( уклањање ).
Постављање и уклањање
- Обично постоје неки поновљени задаци који се морају обавити пре сваког тест случаја. Пример: креирање везе са базом података.
- Исто тако, на крају сваког тест случаја могу се поновити неки задаци. Пример: чишћење након завршетка теста.
- ЈУнит пружа напомене које помажу у подешавању и уклањању. Осигурава ослобађање ресурса и систем за тестирање је у стању спремности за следећи тест случај.
О овим напоменама се говори у наставку -
Поставити
Ознака @Бефоре се користи на методи која садржи Јава код и која се покреће пре сваког тест случаја. тј. покреће се пре сваког извршења теста.
Теардовн (без обзира на пресуду)
@Напомена се користи на методи која садржи јава код и која се покреће након сваког тест случаја. Ове методе ће се покренути чак и ако се изузму било какви изузеци у тест случају или у случају неуспеха у тврдњи.
Белешка:
- Дозвољено је имати било који број горе наведених напомена.
- Све методе означене са @ Бефоре покренуће се пре сваког тест случаја, али могу се покретати у било ком редоследу.
- Можете наследити методе @Бефоре и @Афтер из супер класе, Извршење је следеће: То је стандардни поступак извршења у ЈУнит-у.
- Извршите методе @Бефоре у суперкласи
- Извршите методе @Бефоре у овој класи
- Извршите методу @Тест у овој класи
- Извршите методе @Афтер у овој класи
- Извршите методе @Афтер у суперкласи
Пример: Креирање класе са датотеком као тестним уређајем
јавна класа ОутпутФилеТест{приватни излаз датотеке;@Бефоре публиц воид цреатеОутпутФиле (){оутпут = нова датотека (…);}@Афтер публиц воид делетеОутпутФиле (){оутпут.делете ();}@Тест публиц воид тестФиле1 (){// код циља тест случаја}@Тест публиц воид тестФиле2 (){// код циља тест случаја}}
У горњем примеру ланац извршења биће следећи -
- цреатеОутпутФиле ()
- тестФиле1 ()
- делетеОутпутФиле ()
- цреатеОутпутФиле ()
- тестФиле2 ()
- делетеОутпутФиле ()
Претпоставка: тестФиле1 () се покреће пре тестФиле2 () - што није загарантовано.
Једном подешавање
- Методу је могуће покренути само једном за целу класу теста пре извршавања било ког теста и пре било које методе (и) @ Бефоре .
- „Једном подешавање“ корисно је за покретање сервера, отварање комуникација итд. Затварање и поновно отварање ресурса за сваки тест дуго траје.
- То се може учинити помоћу напомене @ БефореЦласс
@БефореЦласс јавна статичка празнина Метход_Наме () {// код за подешавање класе овде}
Једном сруши
- Слично подешавању само једном, доступан је и метод чишћења једном. Покреће се након извршавања свих метода тест примера и @ Афтер напомена.
- Корисно је за заустављање сервера, затварање комуникационих веза итд.
- То се може урадити помоћу напомене @ АфтерЦласс
@АфтерЦласс јавна статичка празнина Метход_Наме (){// код за чишћење класе овде}
ЈУнит Тест Суитес
Ако желимо да извршимо више тестова у одређеном редоследу, то се може учинити комбиновањем свих тестова на једном месту. Ово место се назива тестним апартманима. Више детаља о томе како извршити тест пакете и како се користи у ЈУнит-у биће покривено у овом упутству.
Јунит Тест Руннер
ЈУнит пружа алат за извршавање ваших тест случајева.
- Класа ЈУнитЦоре се користи за извршавање ових тестова.
- Метода названа рунЦлассес коју пружа орг.јунит.руннер.ЈУнитЦоре користи се за покретање једне или неколико тест класа.
- Тип поврата ове методе је објект Резултат ( орг.јунит.руннер.Ресулт ), који се користи за приступ информацијама о тестовима. Погледајте следећи пример кода за већу јасноћу.
тест јавне класе {јавна статичка воид главна (Стринг [] аргс) {Резултат резултата = ЈУнитЦоре.рунЦлассес (ЦреатеАндСетНаме.цласс);фор (неуспех неуспеха: ресулт.гетФаилурес ()) {Систем.оут.принтлн (фаилуре.тоСтринг ());}Систем.оут.принтлн (ресулт.васСуццессфул ());}}
У горњем коду „резултат“ објект се обрађује да би се добио неуспех и успешни исходи тест случајева које извршавамо.
Први програм ЈУнит
Поштено познавање СДЛЦ-а, Јава програмирања и основа процеса тестирања софтвера помаже у разумевању ЈУнит програма.
Хајде да разумемо Унит Тестирање на примеру уживо. Морамо створити тест класу помоћу методе тестирања означене са @ Тест како је дато у наставку:
МиФирстЦлассТест.јава
пакет гуру99.ЈУнит;увези статички орг.ЈУнит.Ассерт. *;импорт орг.ЈУнит.Тест;јавна класа МиФирстЦлассТест {@Тестјавна воид миФирстМетход () {Стринг стр = "ЈУнит добро ради";ассертЕкуалс ("ЈУнит добро ради", стр);}}
ТестРуннер.јава
Да бисмо извршили нашу тест методу (горе), треба да креирамо тест тркач. У тест тркачу морамо додати класу теста као параметар у методи ЈУнитЦоре'с рунцлассес (). Вратиће резултат теста на основу тога да ли је тест положен или није.
За више детаља о томе погледајте доњи код:
пакет гуру99.ЈУнит;импорт орг.ЈУнит.руннер.ЈУнитЦоре;импорт орг.ЈУнит.руннер.Ресулт;импорт орг.ЈУнит.руннер.нотифицатион.Фаилуре;јавна класа ТестРуннер {јавна статичка воид главна (Стринг [] аргс) {Резултат резултата = ЈУнитЦоре.рунЦлассес (МиФирстЦлассТест.цласс);фор (неуспех неуспеха: ресулт.гетФаилурес ()) {Систем.оут.принтлн (фаилуре.тоСтринг ());}Систем.оут.принтлн ("Резултат ==" + ресулт.васСуццессфул ());}}
Оутпут
Једном када ТестРуннер.јава изврши наше методе испитивања, добијамо излаз као неуспели или прослеђени. У наставку потражите објашњење резултата:
- У овом примеру, након извршавања МиФирстЦлассТест.јава , тест је положен и резултат је зелене боје.
- Ако не би успео, требало би да покаже резултат као црвени, а неуспех се може уочити у трагу неуспеха. Погледајте испод ЈУнит гуи:
Резиме :
- ЈУнит је оквир који подржава неколико напомена за идентификовање методе која садржи тест.
- ЈУнит пружа напомену под називом @ Тест, која ЈУнит-у говори да се метода јавног воид-а у којој се користи може покренути као тест случај.
- Тестна инсталација је контекст у коме се покреће тест случај
- Да бисте извршили више тестова по одређеном редоследу, то се може учинити комбиновањем свих тестова на једном месту. Ово место се назива тестним апартманима.
- ЈУнит пружа алат за извршавање тестова где можемо да покренемо наше тест случајеве који се називају Тест Руннер.