前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TestNG 异常测试

TestNG 异常测试

作者头像
桑鱼
发布2020-04-24 15:49:19
8040
发布2020-04-24 15:49:19
举报

在开始前先大概了解下 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);
    }
}

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运行时异常
  • 自定义异常
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档