В нормален сценарий, всеки път, когато идентифицирате някаква грешка по време на изпълнението на теста, бихте спрели теста, коригирали грешката и стартирали теста отново.
Но JUnit има малко по-различен подход. С JUnit колектор за грешки все още можете да продължите с изпълнението на теста, дори след като е открит проблем или тестът е неуспешен. Събирачът на грешки събира всички обекти за грешки и отчита само веднъж след приключване на тестовото изпълнение.
В този урок ще научите -
- Какво представлява колекторът на грешки в JUnit?
- Какво е @Rule в jUnit?
- Пример за използване на ErrorCollector
- Предимства на JUnit ErrorCollector
Защо да използвам Error Collector?
Докато пишете тестов скрипт, искате да изпълните всички тестове, дори ако някой ред код се провали поради мрежова повреда, неуспешно твърдение или друга причина. В тази ситуация все още можете да продължите да изпълнявате тестов скрипт, като използвате специална функция, предоставена от JUnit, известна като „събирач на грешки“.
За това JUnit използва анотация @Rule, която се използва за създаване на обект на колектор за грешки. След като обектът за събиране на грешки е създаден, можете лесно да добавите всички грешки в обекта, използвайки метода addError (грешка , която може да се хвърли). Както знаете, че Throwable е супер класът на изключения и грешки в Java. Когато добавите грешки по този начин, тези грешки ще бъдат регистрирани в резултата от теста на JUnit.
Ползата от добавянето на всички грешки в колектор за грешки е, че можете да проверите всички грешки наведнъж. Също така, ако скриптът се провали в средата, той все още може да продължи да го изпълнява
Забележка : В случай на използване на прост блок за установяване или опит / улавяне, използването на метод за събиране на грешки няма да е възможно.
Примерен код
За да разберете повече за Error Collector, вижте примера по-долу, който демонстрира как да създадете обект Error Collector и да добавите всички грешки в този обект, за да проследите проблема:
пакет guru99.junit;внос org.junit.Rule;внос org.junit.Test;внос org.junit.rules.ErrorCollector;публичен клас ErrorCollectorExample {@ Правилопубличен колектор ErrorCollector = нов ErrorCollector ();@Тестпубличен празен пример () {collector.addError (new Throwable ("Има грешка в първия ред"));collector.addError (new Throwable ("Има грешка във втория ред"));collector.checkThat (getResults (),not (containsString ("тук има грешка")));// всички редове код ще се изпълнят и в края ще се комбинира грешкада сте влезли.}}
Какво е @Rule в jUnit?
JUnit осигурява специален вид манипулиране на тестове, тестови случаи или тестов пакет чрез използване на анотация @rule . Използвайки @rule, можете лесно да добавите или предефинирате поведението на теста.
Има няколко вградени правила, предоставени от JUnit API, които тестерът може да използва, или дори вие можете да напишете нашето собствено правило.
Вижте по-долу реда на кода, който показва как да използвате @rule анотация заедно с Error Collector:
@ Правилопубличен колектор ErrorCollector = нов ErrorCollector ();
Пример за използване на ErrorCollector
За да разберем колектора на грешки, нека създадем клас и правило за събиране на всички грешки. Тук ще добавите всички грешки, като използвате addError (за хвърляне).
Вижте по-долу кода, който просто създава правило, което не е нищо друго освен създаване на „Обект на колектор на грешки“. Което допълнително се използва за добавяне на всички грешки, за да се докладва за проблема в края:
ErrorCollectorExample.java
пакет guru99.junit;внос org.junit.Assert;внос org.junit.Rule;внос org.junit.Test;внос org.junit.rules.ErrorCollector;публичен клас ErrorCollectorExample {@ Правилопубличен колектор ErrorCollector = нов ErrorCollector ();@Тестпубличен празен пример () {collector.addError (new Throwable ("Има грешка в първия ред"));collector.addError (new Throwable ("Има грешка във втория ред"));System.out.println ("Здравейте");опитвам {Assert.assertTrue ("A" == "B");} catch (Хвърлимо t) {collector.addError (t);}System.out.println ("Свят !!!!");}}
TestRunner.java
Нека добавим горния тестов клас в тестов бегач и го изпълним, за да събере всички грешки. Вижте кода по-долу:
пакет guru99.junit;внос org.junit.runner.JUnitCore;внос org.junit.runner.Result;внос org.junit.runner.notification.Failure;публичен клас TestRunner {публична статична void main (String [] args) {Резултат резултат = JUnitCore.runClasses (ErrorCollectorExample.class);за (Неуспех при неуспех: result.getFailures ()) {System.out.println (failure.toString ());}System.out.println ("Резултат ==" + result.wasSuccessful ());}}
Изход:
Вижте проследяването на грешки, което проследява всички грешки на едно място:
Предимства на JUnit ErrorCollector
Можете да използвате JUnit твърдение за функционално или GUI валидиране, напр
- assertEquals (низово съобщение, обект се очаква, обект действителен), които сравняват, че два обекта са равни.
- По същия начин assertTrue (булево условие) твърди, че условието е вярно.
Използвайки твърдение, тестът за валидиране става лесен. Но един основен проблем е, че изпълнението на теста ще спре дори ако едно твърдение се провали.
Непрекъснатостта на теста и обработката на възстановяването е от решаващо значение за успеха на автоматизацията. Error Collector е най-добрият начин за справяне с подобни сценарии.
Резюме :
- Събирачът на грешки на Junit позволява тестът да продължи дори след като бъде открит първият проблем и тестът се провали в края
- Събирачът на грешки събира всички обекти за грешки и го отчита само, в края на краищата изпълнението на теста е приключило
- Ползата от добавянето на всички грешки в колектор за грешки е, че можете да проверите всички грешки наведнъж
- Събирачът на грешки просто добавя грешки, използвайки метода addError (изхвърляна грешка), предоставен от ErrorCollector.java.