TestNG 异常测试

在开始前先大概了解下 Java 中异常的分类有两种异常:Error 和 Exception

Error:称为错误,由Java虚拟机生成并抛出,包括动态连接失败、虚拟机错误等,程序对其不做处理.

Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常,

Exceptin 中最常见的是RuntimeException ,运行时异常,如被0除,数组下标超范围等,这类异常可以交由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理),自定义异常也属于运行时异常。

但除了RuntimeException的Exception:必须catch ,在JDK里写了throw的必须的catch一般需要用户显式的声明或捕获

我们在运行过程中测试方法可能会抛出一个运行时异常,比如下面的例子:

运行时异常

有时候我们需要做异常测试,比如某个接口调用在一定条件条件下,我们希望得到一个异常的结果,TestNG 通过 ExpectedExceptions可以验证测试代码中的符合预期异常抛出,在上面代码的基础上增加 @Test(expectedExceptions = ArithmeticException.class),从下面图中可以看出运行结果是成成功

自定义异常

首先定义一个自定义异常:

public class OrderSaveException extends RuntimeException {
    public OrderSaveException(String message) {
        super(message);
    }
}

在其他方法抛出自定义异常:

public class OrderBo {
    public void save(Order order) throws OrderSaveException {
       // 如果传入的order对象是null就会抛出自定义异常
        if (order == null) {
            throw new OrderSaveException("Order is empty!");
        }
    }
}

定义Order类:

public class Order {
    private String id;
    private String name;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
}

在测试中验证

public class MyTest{
    OrderBo orderBo = new OrderBo();
    Order data = new Order();
    // 因为没有对Order中的字段赋值所以 data 一定是null,此时运行结果一定失败,抛出自定义异常
    @Test()
    public void throwIfOrderIsNull() throws OrderSaveException {
        orderBo.save(null);
    }
}

现在增加异常测试,测试结果是成功的:

你可能感兴趣的:(TestNG 异常测试)