JUnit Очакван тест за изключение: @Test(очаква се)
JUnit предоставя възможност за проследяване на изключението и също така за проверка дали кодът хвърля очаквано изключение или не.
Junit4 предоставя лесен и четим начин за тестване на изключения, който можете да използвате
- Незадължителен параметър (очаква се) на @test анотация и
- За проследяване на информацията може да се използва "fail()".
Докато Тестване изключение, трябва да се уверите, че класът на изключение предоставяте в този незадължителен параметър на @test анотация е същото. Това е така, защото очаквате изключение от метода, който сте Единично тестване, иначе нашите JUnit тестът ще се провали.
Example@Test(expected=IllegalArgumentException.class)
Като използвате параметъра „очакван“, можете да посочите името на изключението, което нашият тест може да хвърли. В горния пример вие използвате „IllegalArgumentException” който ще бъде хвърлен от теста, ако разработчикът използва аргумент, който не е разрешен.
Пример с използване на @test(очаква се)
Нека разберем тестването на изключения, като създадем a Java клас с метод, хвърлящ изключение. Ще се справите с него и ще го тествате в тестов клас. Помислете JUnitMessage.java има метод, който просто извършва математическа операция въз основа на входни данни, получени от потребителя. Ако бъде въведен незаконен аргумент, той ще хвърли „ArithmeticException“. Вижте по-долу:
package guru99.junit; public class JUnitMessage{ private String message; public JUnitMessage(String message) { this.message = message; } public void printMessage(){ System.out.println(message); int divide=1/0; } public String printHiMessage(){ message="Hi!" + message; System.out.println(message); return message; } }
Обяснение на кода:
- Кодов ред 7: Създаване на параметризиран конструктор с инициализация на полето.
- Кодов ред 11-14: Създаване на метод за математически операции.
- Кодов ред 18: Създаване на друг метод за отпечатване на съобщение.
- Кодов ред 20: Създаване на нов низ за отпечатване на съобщение.
- Кодов ред 21: Отпечатване на ново съобщение, създадено в ред 20.
Нека създадем тестов клас за горния java клас, за да проверим изключението.
Вижте по-долу изключение от тестов клас към единичен тест (ArithmeticException тук) хвърляне от горния java клас:
AirthematicTest.java
package guru99.junit; import static org.junit.Assert.assertEquals; import org.junit.Test; public class AirthematicTest { public String message = "Saurabh"; JUnitMessage junitMessage = new JUnitMessage(message); @Test(expected = ArithmeticException.class) public void testJUnitMessage(){ System.out.println("Junit Message is printing "); junitMessage.printMessage(); } @Test public void testJUnitHiMessage(){ message="Hi!" + message; System.out.println("Junit Message is printing "); assertEquals(message, junitMessage.printMessage()); } }
Обяснение на кода:
- Кодов ред 13: Използване на @Test анотация за създаване на нашия тест. Докато изпълнявате метода на класовете по-горе, той ще извика математическа операция. Тук се очаква аритметично изключение, така че го изброявате като параметър в @Test.
- Кодов ред 17: Извикване на printMessage() JUnitСъобщение.java
- Кодов ред 18: Създаване на друг метод за отпечатване на HI съобщение.
Ако изпълните този тестов клас, тестовият метод се изпълнява с всеки дефиниран параметър. В горния пример тестовият метод се изпълнява пет пъти.
Нека го изпълним и проверим резултата. Вижте по-долу тестовия клас за изпълнение JunitTestExample.java
Изход:
Ето изхода, който показва успешен тест без следа от грешка, както е дадено по-долу:
Oбобщение
- Тестването на изключения е специална функция, въведена в JUnit4. В този урок научихте как да тествате изключение в JUnit използвайки @test (с изключение)
- Junit предоставя възможност за проследяване на изключението и също така за проверка дали кодът хвърля изключение или не
- За тестване на изключения можете да използвате
- Незадължителен параметър (очаква се) на @test анотация и
- За проследяване на информацията може да се използва "fail()".