Този урок обяснява как да игнорирате тестови случаи в JUnit с примери. Ще се научите да използвате @Ignore в JUnit 4 & @Disabled Annotation в JUnit 5:
В предишния урок разбрахме какво представлява API, наречен Annotation, какво прави той и видяхме основни примери за това как да използваме анотациите за жизнения цикъл, приоритетите, които те притежават, когато се изпълнява даден тестови случай.
Нека се опитаме да хвърлим светлина върху ситуациите, в които нужда от не изпълнявате или са не предполагаем Ще се научим да игнорираме тестови случаи в JUnit.
Игнориране на тестови случаи на JUnit
Възможно е да има определени тестови случаи, които да не се изпълняват, тъй като може да не се отнасят до определени промени в кода или кодът за тестовите случаи да е все още в процес на разработка, така че да избягваме тяхното изпълнение.
В такива случаи може да се наложи да изпълним набор от тестови случаи, като пропуснем няколко други. И така, какво ни предоставя JUnit 4, както и JUnit 5, за да можем да изпълним само няколко тестови случая, като пренебрегнем, забраним или наречем "пропуснем" няколко тестови случая?
За щастие имаме @Ignore анотация за JUnit 4 за пропускане на тестови случай, докато @Disabled анотация за JUnit 5 да направи същото.
JUnit 4 - Анотация @Ignore
- Анотацията @Ignore на JUnit 4 може да се приложи за метод за тестване, за да се пропусне изпълнението му. В този случай трябва да използвате @Ignore с анотацията @Test за метода за тестване, който искате да пропуснете.
- Анотацията може да бъде приложена и към тестовия клас, за да се пропуснат всички тестови случаи в рамките на класа. В този случай трябва да използвате @Ignore на ниво клас.
Кодът се нуждае от импортиране на пакета org.junit.Ignore, за да работи @Ignore. Нека демонстрираме как да пропуснем метод на тест в тест на JUnit 4. Ще модифицираме JUnitProgram.java, за да пропуснем първия метод на тестовия случай.
Откъсът от код е:
@Ignore @Test public void test_JUnit1() { System.out.println("Това е тестовият случай test_JUnit1() в този клас"); } @Test public void test_JUnit2() { System.out.println("Това е тестовият случай test_JUnit2() в този клас"); } @Test public void test_JUnit3() { System.out.println("Това е тестовият случай test_JUnit3() в този клас"); } @Test public void test_JUnit3()
При изпълнението на файла с класа, test_JUnit1() се пропуска по време на изпълнението. Освен това методът, анотиран с @Ignore, и всички други тестови методи се изпълняват както се очаква.
В резултат на това броят на изпълненията показва 3/3 тестови случая и 1 пропуснат. Броят на изпълненията показва 3/3, защото дори пропуснатият тестови случай се опита да се изпълни.
Показаната по-долу снимка на прозореца на конзолата доказва същото.
@Игнориране на анотация с параметър за причина
Има и вариант на анотацията @Ignore. Анотацията приема единичен аргумент със стойност на низ, който е причината за пропускане на теста.
Нека демонстрираме този вариант на анотацията @Ignore.
Откъсът от код е следният:
@Ignore("тестовият случай е в процес на разработка") @Test public void test_JUnit1() { System.out.println("Това е тестовият случай test_JUnit1() в този клас"); }
В прозореца на конзолата се вижда същият резултат, какъвто е бил без причината, предадена на анотацията @Ignore.
Сега нека видим как могат да бъдат забранени всички тестове, принадлежащи на даден клас. Сега ще актуализираме анотацията @Ignore на ниво клас за JUnitProgram.java
Откъсът от код е показан по-долу:
import org.junit.AfterClass; @Ignore("тестовият случай е в процес на разработка") public class JUnitProgram { @BeforeClass public static void preClass() { System.out.println("Това е методът preClass(), който се изпълнява един път преди класа"); } @Before public void setUp() { System.out.println("_______________________________________________________\n"); System.out.println("Това е методът setUp(), койтосе изпълнява преди всеки тесткейс"); } @Test public void test_JUnit1() { System.out.println("Това е тесткейсът test_JUnit1() в този клас"); }
След изпълнението на файла с класа конзола показва нищо, и Изпълнявайте брой в раздела JUnit показва 1 клас пропуснат от 1 клас .
По-долу е показана снимка на прозореца на конзолата:
JUnit 5 - Анотация @Disabled
Анотацията @Disabled в JUnit 5 работи подобно на анотацията @Ignore в JUnit 4.
- Можете да забраните или пропуснете изпълнението на метод за изпитване или група от тестове, като приложите анотацията на ниво Тест.
- Или всички тестове могат да бъдат пропуснати, като се приложи анотацията @Disabled на ниво клас, вместо да се прилага на ниво метод на теста.
Подобно на @Ignore, за @Disabled също може да се подаде причина, за да може всеки разработчик или бизнес анализатор да знае защо е пропуснат конкретен тестови случай. Параметърът остава незадължителен, както в случая с @Ignore.
( Забележка: Ще избегнем демонстрирането на анотацията @Disabled чрез действителен код, за да избегнем повторения, тъй като тя следва точно модела на @Ignore в JUnit 4.)
Единствената разлика, която ще забележите в случая на @Ignore Vs @Disabled е, че когато анотацията се прилага на ниво клас, след изпълнението на класовия файл на JUnit, броят на изпълненията в случая на JUnit 4 , показва 1/1 пропуснат клас.
Следователно a предоставя се броят на пропуснатите класове като има предвид, че в случая на JUnit 5 показва, че 3/3 тестови случая са пропуснати, като се има предвид, че три метода на изпитване са пропуснати от общо три тестови метода в класа.
Следователно, на видимост на броя на пропуснатите тестови случаи , JUnit 5 прави леко по-добър в сравнение с JUnit 4.
Заключение
В този урок научихме кои са ситуациите, в които може да се наложи да пропуснем изпълнението на няколко тестови случая. Научихме също така как да пропуснем някои тестови случаи както в JUnit 4, така и в JUnit 5.