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)