このチュートリアルでは、TestNG `expectedExceptions`を使用してコード内の予想される例外スローをテストする方法を説明します。
1.ランタイム例外
この例では、実行時例外をテストする方法を示します。 `divisionWithException()`メソッドがランタイム例外 – ArithmeticException`をスローすると、それは渡されます。
TestRuntime.java
package com.mkyong.testng.examples.exception;
import org.testng.annotations.Test;
public class TestRuntime {
@Test(expectedExceptions = ArithmeticException.class)
public void divisionWithException() {
int i = 1/0;
}
}
上記の単体テストがパスされます。
2.チェック例外
シンプルなビジネスオブジェクトをレビューし、メソッドを保存して更新し、エラーの場合はカスタムのチェック例外をスローします。
OrderBo.java
package com.mkyong.testng.project.order;
public class OrderBo {
public void save(Order order) throws OrderSaveException {
if (order == null) {
throw new OrderSaveException("Order is empty!");
}
//persist it
}
public void update(Order order) throws OrderUpdateException, OrderNotFoundException {
if (order == null) {
throw new OrderUpdateException("Order is empty!");
}
//If order is not available in the database
throw new OrderNotFoundException("Order is not exists");
}
}
予想される例外をテストする例
TestCheckedException.java
package com.mkyong.testng.examples.exception;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import com.mkyong.testng.project.order.Order;
import com.mkyong.testng.project.order.OrderBo;
import com.mkyong.testng.project.order.OrderNotFoundException;
import com.mkyong.testng.project.order.OrderSaveException;
import com.mkyong.testng.project.order.OrderUpdateException;
public class TestCheckedException {
OrderBo orderBo;
Order data;
@BeforeTest
void setup() {
orderBo = new OrderBo();
data = new Order();
data.setId(1);
data.setCreatedBy("mkyong");
}
@Test(expectedExceptions = OrderSaveException.class)
public void throwIfOrderIsNull() throws OrderSaveException {
orderBo.save(null);
}
/**
** Example : Multiple expected exceptions
** Test is success if either of the exception is thrown
** / @Test(expectedExceptions = { OrderUpdateException.class, OrderNotFoundException.class })
public void throwIfOrderIsNotExists() throws OrderUpdateException, OrderNotFoundException {
orderBo.update(data);
}
}
上記の単体テストがパスされます。
ソースコードをダウンロードする
それをダウンロードする:
TestNG-Example-Excepted-Exception.zip
(11 kb)
参考文献
ExpectedExceptions JavaDoc]