美文网首页
TestNG 异常测试

TestNG 异常测试

作者: 桑鱼nicoo | 来源:发表于2020-04-23 14:55 被阅读0次

    在开始前先大概了解下 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 异常测试

          本文链接:https://www.haomeiwen.com/subject/vcboihtx.html