JUnit Очакван тест за изключение: @Test(очаква се)

JUnit предоставя възможност за проследяване на изключението и също така за проверка дали кодът хвърля очаквано изключение или не.

Junit4 предоставя лесен и четим начин за тестване на изключения, който можете да използвате

  • Незадължителен параметър (очаква се) на @test анотация и
  • За проследяване на информацията може да се използва "fail()".

Докато Тестване изключение, трябва да се уверите, че класът на изключение предоставяте в този незадължителен параметър на @test анотация е същото. Това е така, защото очаквате изключение от метода, който сте Единично тестване, иначе нашите JUnit тестът ще се провали.

Example@Test(expected=IllegalArgumentException.class)

Като използвате параметъра „очакван“, можете да посочите името на изключението, което нашият тест може да хвърли. В горния пример вие използвате „IllegalArgumentException” който ще бъде хвърлен от теста, ако разработчикът използва аргумент, който не е разрешен.

Пример с използване на @test(очаква се)

Нека разберем тестването на изключения, като създадем a Java клас с метод, хвърлящ изключение. Ще се справите с него и ще го тествате в тестов клас. Помислете JUnitMessage.java има метод, който просто извършва математическа операция въз основа на входни данни, получени от потребителя. Ако бъде въведен незаконен аргумент, той ще хвърли „ArithmeticException“. Вижте по-долу:

Пример с използване на @Test

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

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

Изход:

Ето изхода, който показва успешен тест без следа от грешка, както е дадено по-долу:

AirthematicTest.Java Продукция

Oбобщение

  • Тестването на изключения е специална функция, въведена в JUnit4. В този урок научихте как да тествате изключение в JUnit използвайки @test (с изключение)
  • Junit предоставя възможност за проследяване на изключението и също така за проверка дали кодът хвърля изключение или не
  • За тестване на изключения можете да използвате
    • Незадължителен параметър (очаква се) на @test анотация и
    • За проследяване на информацията може да се използва "fail()".