TestNG –予想される例外テスト
このチュートリアルでは、TestNGexpectedExceptions
を使用して、コードで予想される例外スローをテストする方法を示します。
1. ランタイム例外
この例では、ランタイム例外をテストする方法を示します。 メソッドdivisionWithException ()
が実行時例外–ArithmeticException
をスローした場合、それは渡されます。
TestRuntime.java
package com.example.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.example.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.example.testng.examples.exception; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import com.example.testng.project.order.Order; import com.example.testng.project.order.OrderBo; import com.example.testng.project.order.OrderNotFoundException; import com.example.testng.project.order.OrderSaveException; import com.example.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("example"); } @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)