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);
    }
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、异常 1.1、异常介绍 异常:不正常。生活中的异常:例:在上课时,突然间停电,造成上课终止。 处理:等待来...
    Villain丶Cc阅读 1,029评论 0 5
  • 来源:https://www.cnblogs.com/Qian123/p/5715402.html#_label0...
    Alex笔记阅读 394评论 0 1
  • Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理...
    JourWon阅读 1,305评论 0 5
  • 什么是异常?Java代码在运行时期发生的问题就是异常。在Java中,把异常信息封装成了一个类。当出现了问题时,就会...
    圣贤与无赖阅读 433评论 0 0
  • 《当男人变成女人》 当男人变成女人, 从女人变成孩子, 又从孩子变成男人。 这是一个过程, 他意味着丧失。 有人说...
    九五乾谦阅读 1,074评论 0 12