TestNG - 予想される例外テスト

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)