Када пишете пакет јединичних тестова, можда постоје неке активности које се не односе на тестирање које морате да обавите. Ове активности могу имати било који облик. Можда ћете морати да се повежете са базом података или прикупите ресурсе пре него што извршите тест. Након што се сваки тестни случај изврши, можда ћете морати да ослободите неке ресурсе.

Извођење било које од ових активности које се не односе на тестирање ван обима класе јединичног теста може бити заморно, ако не и немогуће. Успешно извршавање ваше тест класе може зависити од ових активности, тако да ЈУнит обезбеђује два пара напомена за решавање овог проблема.

Белешка @БефореАлл

ЈУнит тест класа може имати једну или више метода тестирања. Белешка @БефореАлл сигнализира да би одређена метода требало да се изврши пре свих тестних метода у тест класи. Метода повезана са овом напоменом извршава се само једном (на почетку теста) без обзира на број тестних метода у тест класи.

Сваки метод који користи напомену @БефореАлл мора да прати неколико одредби. Ове методе морају имати тип враћања воид, морају бити јавне и не смеју бити приватне. Белешка @БефореАлл је идеална за успостављање а

везу са базом података или креирање нове датотеке. Овај чланак користи тестну класу калкулатора да покаже како можете да користите напомену @БефореАлл.

Класа калкулатора

пакет цом.апп;
јавностикласаКалкулатор{
јавностистатичнеинтдодати(инт број1, инт број 2){
повратак нум1 + нум2;
}
јавностистатичнеинтодузимати(инт број1, инт број 2){
повратак нум1 - нум2;
}
јавностистатичнеинтумножити(инт број1, инт број 2){
повратак број1 * број2;
}
јавностистатичнеинтподела(инт број1, инт број 2){
повратак нум1 / нум2;
}
}

Тхе ЦалцулаторТест Цласс

увозстатичнеорг.јунит.Јупитер.апи.Тврдње.*;
увозорг.јунит.Јупитер.апи.БефореАлл;
увозорг.јунит.Јупитер.апи.Тест;
увозорг.јунит.Јупитер.апи.Показати име;

@ДисплаиНаме("Тест класа која показује како се користити тхе пре него штоипосле напомене.")
класаЦалцулаторТест{
@БефореАлл
јавностистатичнепразнинаповерОнЦалцулатор(){
Систем.оут.принтлн("Калкулатор је укључен");
}

@Тест
@Показати име("Метода тестирања која додаје две целобројне вредности.")
јавностипразнинатестАдд(){
ассертЕкуалс(7, Калкулатор.додати(3, 4));
}

@Тест
@Показати име("Метода тестирања која одузима једну целобројну вредност од друге.")
јавностипразнинатестСубтрацт(){
ассертЕкуалс(6, Калкулатор.одузми(9, 3));
}

@Тест
@Показати име("Метода тестирања која множи две целобројне вредности")
јавностипразнинатестМултипли(){
ассертЕкуалс(10, Калкулатор.умножити(5, 2));
}

@Тест
@Показати име("Метода тестирања која дели једну целобројну вредност другом")
јавностипразнинатестДивиде(){
ассертЕкуалс(2, Калкулатор.подела(4, 2));
}
}

У овој класи, @БефореАлл напомена ради са методом поверОнЦалцулатор(), која штампа „Калкулатор је укључен“ пре било каквог пробног покретања. Успешно извршење теста штампа следећи извештај о тестирању:

Као што видите, метода повезана са белешком @БефореАлл се не појављује у извештају о тестирању. Међутим, ако постоји грешка у методи напомене @БефореАлл, резултати извештаја о тестирању ће то указати на грешку.

Анотација @БефореЕацх

Као и @БефореАлл метод са коментарима, @БефореЕацх метод са коментарима се неће појавити у извештају о тестирању. Метод са коментарима @БефореЕацх се извршава пре сваког тестног метода у тест класи. Дакле, ако тестна класа садржи две методе тестирања, онда ће се напомена @БефореЕацх извршити двапут.

увозстатичнеорг.јунит.Јупитер.апи.Тврдње.*;
увозорг.јунит.Јупитер.апи.БефореАлл;
увозорг.јунит.Јупитер.апи.БефореЕацх;
увозорг.јунит.Јупитер.апи.Тест;
@ДисплаиНаме("Тест класа која показује како се користити тхе пре него штоипосле напомене.")
класаЦалцулаторТест{
@БефореАлл
јавностистатичнепразнинаповерОнЦалцулатор(){
Систем.оут.принтлн("Калкулатор је укључен");
}
@БефореЕацх
јавностипразнинацлеарЦалцулатор(){
Систем.оут.принтлн("Калкулатор је спреман");
}
@Тест
@Показати име("Метода тестирања која додаје две целобројне вредности.")
јавностипразнинатестАдд(){
ассертЕкуалс(7, Калкулатор.додати(3, 4));
}
@Тест
@Показати име("Метода тестирања која одузима једну целобројну вредност од друге.")
јавностипразнинатестСубтрацт(){
ассертЕкуалс(6, Калкулатор.одузми(9, 3));
}
@Тест
@Показати име("Метода тестирања која множи две целобројне вредности")
јавностипразнинатестМултипли(){
ассертЕкуалс(10, Калкулатор.умножити(5, 2));
}
@Тест
@Показати име("Метода тестирања која дели једну целобројну вредност другом")
јавностипразнинатестДивиде(){
ассертЕкуалс(2, Калкулатор.подела(4, 2));
}
}

Додавање напомене @БефореЕацх у класу ЦалцулаторТест даје следећи излаз:

Метода повезана са @БефореЕацх анотацијом се извршава четири пута, једном пре сваке методе тестирања. Требало би да приметите да метода @БефореЕацх није статична, има тип враћања воид и није приватан, јер су ово обавезне одредбе. Такође је важно напоменути да се метод повезан са напоменом @БефореЕацх покреће након методе @БефореАлл.

Анотација @АфтерАлл

Метода са @АфтерАлл анотацијом ће се извршити након што све методе тестирања у тест класи заврше своје извршавање. Белешка @АфтерАлл је идеална за основне операције са датотекама, као што је затварање датотеке или прекид везе са базом података. Белешка @АфтерАлл је пандан напомени @БефореАлл. Као и @БефореАлл анотација, @АфтерАлл напомена мора бити статична, мора да враћа воид и много тога не мора бити приватно.

@После свега
јавностистатичнепразнинаповерОффЦалцулатор(){
Систем.оут.принтлн("Калкулатор је искључен");
}

Додавање методе са коментарима @АфтерАлл у постојећу класу ЦалцулаторТест исписује следећи излаз на конзоли:

Имајте на уму да се метода поверОффЦалцулатор(), која користи напомену @АфтерАлл, штампа на крају тестне класе, након што се изврше све методе тестирања.

Анотација @АфтерЕацх

Белешка @АфтерЕацх је пандан напомени @БефореЕацх. Имају исте обавезне одредбе, које се мало разликују од оних у напоменама @БефореАлл и @АфтерАлл. Оно што разликује напомену @АфтерЕацх од напомене @БефореЕацх (осим њихових имена) је то што се метода @АфтерЕацх покреће након сваке методе тестирања.

@АфтерЕацх
јавностипразнинаретурнРесултс(){
Систем.оут.принтлн("Резултати су спремни");
}

Извршавање класе ЦалцулаторТест исписује следећи излаз на конзоли:

Излаз показује да се метода повезана са напоменом @АфтерЕацх (ретурнРесултс) штампа четири пута. Свако извршење методе ретурнРесултс() се дешава тек након извршења сваког јединичног теста. Ово је очигледно чињеницом да се излаз методе ретурнРесултс() појављује након сваког излаза из методе повезаног са @БефореЕацх анотацијом.

Полирајте своје тестне пакете помоћу напомена

ЈУнит вам омогућава да рукујете процесима који нису повезани са тестирањем користећи пар напомена пре и после. Ове четири напомене припадају листи неколико других напомена које додају вредност вашим тестовима. Још једна од ЈУнит-ових напомена је @ДисплаиНаме.

Два примера кода који приказују комплетну класу ЦалцулаторТест користе напомену @ДисплаиНаме. Белешка @ДисплаиНаме вам помаже да креирате смисленија имена за ваше тестне класе и методе тестирања.