JUnit3 结合一个除法的单元测试说明Assert.fail()的用法

JUnit3 结合一个除法的单元测试说明Assert.fail()的用法

  

  之前一篇博文(JUnit基础及第一个单元测试实例(JUnit3.8))介绍了用JUnit做单元测试的基本方法,并写了一个简单的类Calculator,其中包含了整型加减乘除的简单算法。

  本文通过完善其中的除法和除法的单元测试来继续说明JUnit的用法。

 

  首先完善Calculator类中的除法,在除数为零的情况下抛出一个异常:

复制代码
    public int divide(int a, int b) throws Exception
    {
        if(0 == b)
        {
            throw new Exception("除数不能为0");            
        }
        return a / b;
    }
复制代码

 

 

设计测试用例

  测试用例中不再抛出异常,而是使用try catch块。

  首先是测试正常情况的测试用例:

复制代码
    public void testDivide()
    {
        int result = 0;
        try
        {
            result = calculator.divide(12, 3);
        }
        catch (Exception e)
        {
            e.printStackTrace();

            // 如果抛出异常,证明测试失败,没有通过,没通过的测试计数在Failures中
            Assert.fail();
            // 如果不加这一行,如果程序进入到catch,无法判断其失败
        }
        // 判断方法的返回结果
        Assert.assertEquals(4, result);// 第一个参数是期望值,第二个参数是要验证的值

    }
复制代码

 

  测试异常情况的测试用例:

复制代码
    public void testDivideByZero()
    {
        Throwable tx = null;

        int result = 0;
        try
        {
            result = calculator.divide(12, 2);

            Assert.fail("没有抛出异常,测试失败");// 如果执行到这行代码,则证明没有抛出异常,说明我们的验证失败
        }
        catch (Exception e)
        {
            e.printStackTrace();
            tx = e;

        }

        Assert.assertEquals(Exception.class, tx.getClass());// 抛出的异常类型是否和期望一致
        Assert.assertEquals("除数不能为0", tx.getMessage());// 抛出的异常信息是否和期望一致
        
        //如果上面两个都通过,则测试通过

    }
复制代码

  

  此代码中故意将除数改为2,测试失败。

  除数为2时的执行情况:

  

  总结:Assert.fail()加在期望中不可能到达的地方,一旦到达,表明测试失败,结果与预期不同。

转载于:https://www.cnblogs.com/aimengying/p/3591319.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值