junit test execution order
Овај водич објашњава како поставити налог за извршавање ЈУнит тест случајева. Научићете о напоменама и класама за постављање налога за извршавање ЈУнит теста у ЈУнит 4 у односу на ЈУнит 5:
Научили смо како да креирамо тестни пакет, како да додамо категорију или ознаку тест случајевима и како да филтрирамо тестове (изузмемо или укључимо тест случајеве) на основу категорије или ознаке у нашем претходном водичу.
Осим тога, то смо сазнали у ЈУнит-у 4 @Цатегори, @ИнцлудеЦатегори, и @ЕкцлудеЦатегори за филтрирање тест случајева док ЈУнит 5 има @ИнцлудеТагс и @ЕкцлудеТагс учинити исто.
ЈУнит 5 има додатне могућности филтрирања помоћу напомена @ИнцлудеПацкагес, @ЕкцлудеПацкагес, а такође и напомене за укључивање или искључивање класа помоћу образаца назива класе.
=> Погледајте овде да бисте видели А-З лекција ЈУнит Траининг .
Шта ћете научити:
Налог за извршење ЈУнит теста
У овом упутству ћемо научити како поставити редослед за сваки тест случај тако да се они извршавају по задатом редоследу. Научићемо како да наручимо тестове у ЈУнит 4, као и у ЈУнит 5.
Методе испитивања се подразумевано не придржавају одређеног редоследа.Тест случајеви не морају нужно да се извршавају оним редоследом којим су написани.
Постоје различити начини или начини постављања редоследа извршавања за тест случајеве. Такође ћемо дубоко заронити у то како варира ЈУнит 4 приликом наручивања тест случајева у поређењу са ЈУнит 5.
ЈУнит 4: @ФикедМетходОрдер, Цласс МетходСортерс
Почевши од ЈУнит 4.11, имамо напомену @ФикМетходОрдер и МетходСортерс.цласс подржавајући могућност постављања налога за извршење теста.
Пакет орг.јунит.руннерс. * потребно је увести да би се укључила класа МетходСортерс . Ова класа одлучује како треба наручити тест случајеве. МетходСортерс имати три енум вредности.
Доље су дате енум вредности класе заједно са сврхом којој служи свака вредност:
МетходСортерс.ДЕФАУЛТ | Ова вредност набрајања извршава сортирање извршења теста по одређеном редоследу. Међутим, никада није предвидљиво којим редоследом би могао покретати тест случајеве. |
Због тога имате контролу над одлуком о томе који тестцасе треба покренути први, а који следе. | |
Приметио сам да класа са више метода сортираних са ДЕФАУЛТ енум када се извршава, редослед остаје исти сваки пут током извршавања теста. | |
Међутим, не постоји начин на који бих могао предвидети или одгонетнути начин постављања налога. | |
МетходСортерс.ЈВМ | Редослед извршавања теста са ЈВМ енумом је како назив подразумева ЈВМ. |
У овом случају, сваки пут када покренете наставу, тестови се извршавају не истим већ случајним редоследом. | |
Другим речима, редослед тестова се мења током сваког трчања. | |
МетходСортерс.НАМЕ_АСЦЕНДИНГ | Ово набрајање сортира методе испитивања у лексикографском редоследу имена методе. Стога можете бити сигурни јер је ово најпредвидљивији начин наређивања извршења теста. |
Стога можете унапред да одредите редослед тестова на основу лексикографског редоследа имена који сте поставили. |
Напомена @ФикедМетходОрдер узима улазни параметар од МетходСортерс са својом набројаном вредношћу. Пакет потребан за напомену је орг.јунит.ФикедМетходОрдер.
Погледајмо како се примењује кроз код.
Имплементација кода за МетходСортерс.ДЕФАУЛТ
Направимо датотеку класе ЈУнит ‘ Јунит4ТестОрдер.јава ' где ћемо користити МетходСортерс.ДЕФАУЛТ
Код за Јунит4ТестОрдер.јава
@FixMethodOrder(MethodSorters.DEFAULT) public class JUnit4TestOrder { @Test public void Testcase_3() { System.out.println('Testcase_3 executes'); } @Test public void Testcase_1() { System.out.println('Testcase_1 executes'); } @Test public void Testcase_2() { System.out.println('Testcase_2 executes '); } }
Три пута изводимо наставу и видимо да се изводи исти редослед тестова као и доле, међутим, тест случајеви могу или не морају бити извршени пореданим редоследом.
У прозору конзоле приказани су резултати као у наставку - редослед извођења теста је ТестЦасе_3, ТестЦасе_1 и ТестЦасе_2 и редослед се не мења са бројем покретања.
Имплементација кода за МетходСортерс. ЈВМ
Сада ћемо ажурирати „Јунит4ТестОрдер.јава“ тако да има МетходСортерс.ЈВМ
Фрагмент кода за Јунит4ТестОрдер.јава
@FixMethodOrder(MethodSorters . JVM ) public class JUnit4TestOrder {
Класу изводимо два пута и редослед извршавања тестова се мења са сваким извршавањем.
Прозор конзоле за први трчање је приказано доле:
Прозор конзоле за друго трчање је приказано доле:
Пажљиво посматрајте промену редоследа у којем се тестови извршавају у оба циклуса. Редослед испитивања у две вожње се разликовао.
Имплементација кода за МетходСортерс.НАМЕ_АСЦЕНДИНГ
Сада ћемо ажурирати „Јунит4ТестОрдер.јава“ тако да има МетходСортерс.НАМЕ_АСЦЕНДИНГ
Фрагмент кода за Јунит4ТестОрдер.јава
@FixMethodOrder(MethodSorters.NAME_ASCENDING) public class JUnit4TestOrder {
Класу покрећемо два пута, редослед извршених тестова остаје исти и извршава се према растућем редоследу имена методе.
Прозор конзоле приказује резултат тестова извршених по редоследу ТестЦасе_1, ТестЦасе_2 и ТестЦасе_3.
ЈУнит 5: @ТестМетходОрдер, @Ордер, Интерфаце МетходОрдерер
Да би контролисали редослед извршавања тестова, следећи ентитети помажу да се уради исто:
- Напомена @ТестМетходОрдер
- Напомена @ Ордер
- Класе које припадају интерфејсима МетходОрдерер
Уграђене класе МетходОрдерер и њихови детаљи су као у наставку:
МетходОрдерер је уграђен у класу | Из пакета | Детаљи |
---|---|---|
Алфанумерички | орг.јунит.јупитер.апи.МетходОрдерер.Алфханумериц | Разврстава методе испитивања алфанумерички на основу њихових имена |
ОрдерАннотатион | орг.јунит.јупитер.апи.МетходОрдерер.ОрдерАннотатион | Разврстава методе испитивања нумерички на основу вредности прослеђених напомени @ Ред |
Случајно | орг.јунит.јупитер.апи.МетходОрдерер.Рандом | Случајно сортира методе испитивања, баш као у случају МетходСортерс.ЈВМ у ЈУнит 4 |
Погледајмо сада демонстрацију сваке од ових стратегија наручивања:
Имплементација кода за алфанумерички.разред
Створимо датотеку класе ЈУнит 5 под називом ЈУнит5ТестОрдер.јава исто као и ЈУнит4ТестОрдер.јава и искористимо напомену са Алпханумериц.цласс да бисмо алфанумерички наручили тестове.
Код за Јунит5ТестОрдер.јава
@TestMethodOrder(Alphanumeric.class) public class JUnit5TestOrder { @Test public void Testcase_3() { System.out.println('Testcase_3 executes'); } @Test public void Testcase_1() { System.out.println('Testcase_1 executes'); } @Test public void Testcase_2() { System.out.println('Testcase_2 executes '); } }
Трипут смо изводили наставу и даље видимо исти редослед тестова који се изводе у алфанумерички сортираном редоследу имена методе испитивања.
Пост извршење датотеке класе, редослед извршења теста:
- Тестцасе_1,
- Тестцасе_2 и
- Тестцасе_3
Белешка: Алфанумеричка стратегија сортирања разликује велика и мала слова па у случају да имамо још један тест случај са именом тестцасе_1.
Редослед извршења био би:
- Тестцасе_1,
- Тестцасе_2,
- Тестцасе_3,
- тестцасе_1.
Стога велико слово има предност над именима малих слова.
Имплементација кода за насумични.цласс
Сада ћемо ажурирати класу ЈУнит 5 ЈУнит5ТестОрдер.јава да бисмо користили напомену са Рандом.цласс
Фрагмент кода за Јунит5ТестОрдер.јава
@TestMethodOrder (Random.class) public class JUnit5TestOrder {
Два пута смо водили наставу и видели смо да је сваки пут трчао час, редослед извршења теста био је насумично одређен.
Пост извршење датотеке класе за први пут , редослед извршења теста био је:
- Тестцасе_2,
- Тестцасе_1
- Тестцасе_3
Редослед извршења када се кандидовало за друго време је показало:
- Тестцасе_2,
- Тестцасе_3
- Тестцасе_1 .
Имплементација кода за ОрдерАннотатион.цласс
Сада ћемо ажурирати ЈУнит 5 класу ЈУнит5ТестОрдер.јава да бисмо користили напомену са ОрдерАннотатион.цласс. Напомена @Наручи такође ће играти важну улогу у постављању приоритета метода испитивања овде.
Фрагмент кода за Јунит5ТестОрдер.јава
@TestMethodOrder(OrderAnnotation.class) public class JUnit5TestOrder { @Test @Order(1) public void Testcase_3() { System.out.println('Testcase_3 executes'); } @Test @Order(2) public void Testcase_1() { System.out.println('Testcase_1 executes'); } @Test @Order(3) public void Testcase_2() { System.out.println('Testcase_2 executes '); } }
Дакле, у овој стратегији постављања налога за извршавање теста, анотација @Ордер намеће методе тестирања које се покрећу по вредност поруџбине постављен за то.
Што је нижа вредност @Наручи за тест методу, то је већи њен приоритет током извршавања.
Након извршења, редослед тестова текао је на следећи начин:
- Тестцасе_3,
- Тестцасе_1
- Тестцасе_2 јер је редослед постављен за тест случајеве 1,2, односно 3.
Због тога није важно да ли су тестови написани по реду. Поред тога, није важно да ли су називи метода алфанумерички или нису.
ЈУНИТ 5: Стварање прилагођеног поретка
Поред тога, уграђене класе налога, ЈУнит 5 такође подржава прилагођене налоге применом интерфејса МетходОрдерер . Почевши од ЈУнит 5 верзије 5.4, подржана је прилагођена сортирање.
Погледајмо брзо како да креирамо и применимо прилагођени редослед према дужини методе.
Корак 1: Направио је класу прилагођеног налога која имплементира интерфејс МетходОрдерер и назвао је класу ТестЦасеЛенгтхОрдер
Код за ТестЦасеЛенгтхОрдер.јава
public class TestCaseLengthOrder implements MethodOrderer { @Override public void orderMethods(MethodOrdererContext context) { MethodDescriptor md1; MethodDescriptor md2; context.getMethodDescriptors().sort((md1, md2)-> md1.getMethod().getName().length().compareTo(md2.getMethod().getName().length())); } }
Објашњење кода ТестЦасеЛенгтхОрдер:
- Класа прилагођеног редоследа креира се применом интерфејса МетходОрдерер.
- воид ордерМетходс (МетходОрдерЦонтект цонтект) {} метода која је уграђена метода имплементирана из Интерфаце МетходОрдерер. Овде дефинишете примену логике теста за наручивање.
- МетходДесцриптор је интерфејс који обухвата детаље о методи:
- Метода МетходДесцриптор.гетМетход () добија име методе за овај дескриптор.
- Име методе претвара се у Стринг методом гетНаме () тј. МетходДесцриптор.гетМетход (). ГетНаме () и
- Метода ленгтх () преузима дужину методе (баш као што стринг.ленгтх () преузима дужину вредности низа).
- Сва имена метода се међусобно упоређују помоћу методе цомпареТо ().
- Метода гетМетходДесцрипторс () добија листу свих дескриптора методе у класи.
- Метода сорт () сортира објекте МетходДесцриптор.
Сада, када смо јасно разумели сваки АПИ МетходОрдерер-а, надамо се да је лако протумачити горњи код.
Корак 2 : Користите класу прилагођеног редоследа као било коју уграђену поруџбину у тест класи.
Као улаз у напомену @ТестМетходОрдер.
Код за ЈУнит_ЦустомОрдер.јава
@TestMethodOrder(TestCaseLengthOrder.class) class JUnit_CustomOrder{ @Test public void subt(){ } @Test public void add(){ } @Test public void multiply(){ } @Test public void divide(){ }
Корак 3:
Пост извршење ЈУнит_ЦустомОрдер.цласс , редослед извршења теста је следећи на основу растућег редоследа дужине назива тест случајева:
- додати(),
- субт (),
- подела ()
- помножи ()
Закључак
Да закључим овај водич о ЈУнит Тест Екецутион Ордер.
- Научили смо како да поставимо редослед тест случајева користећи одређене напомене као и одређене класе.
- Такође смо научили различите начине наручивања тестова за ЈУнит 4 и ЈУнит 5, на основу којих су се мењале стратегије наручивања.
- Поред тога, научили смо како у ЈУнит 5 такође можемо створити прилагођену класу сортирања и користити је за наручивање тест случајева током њиховог извршавања.
=> Овде погледајте водич за почетнике ЈУнит-а.
Препоручено читање
- ЈУнит тестови: Како писати ЈУнит тест случајеве са примерима
- Списак ЈУнит напомена: ЈУнит 4 вс ЈУнит 5
- ЈУнит Игноре Тест Цасе: ЈУнит 4 @Игноре Вс ЈУнит 5 @Дисаблед
- ЈУнит Тест Суите и случајеви филтрирања тестова: ЈУнит 4 Вс ЈУнит 5
- Шта је учвршћење ЈУнит теста: Водич за примере ЈУнит 4
- Водич за ЈУнит за почетнике - шта је ЈУнит тестирање
- Више начина за извршавање ЈУнит тестова
- Како паралелно покренути велико извршавање тестова на апијуму