TestNG – 予想される例外テスト
このチュートリアルでは、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]