Test注解的两个属性:expected和timeout

编程技术  /  houtizong 发布于 3年前   66

JUnit4:Test文档中的解释:

  The Test annotation supports two optional parameters.

  The first, expected, declares that a test method should throw an exception.

  If it doesn't throw an exception or if it throws a different exception than the one declared, the test fails.

  For example, the following test succeeds:

@Test(expected=IndexOutOfBoundsException.class) public void outOfBounds() {    new ArrayList<Object>().get(1);}

  The second optional parameter, timeout, causes a test to fail if it takes longer than a specified amount of clock time (measured in milliseconds).

  The following test fails:

@Test(timeout=100) public void infinity() {    while(true);}

  文档中说得比较清楚,下面再结合之前加减乘除的例子重复地解释一下,以作巩固。

expected属性

  用来指示期望抛出的异常类型。

  比如除以0的测试:

@Test(expected = Exception.class)public void testDivide() throws Exception{       cal.divide(1, 0);}

  抛出指定的异常类型,则测试通过 。

  如果除数改为非0值,则不会抛出异常,测试失败,报Failures。

timeout属性

  用来指示时间上限。

  比如把这个属性设置为100毫秒:

@Test(timeout = 100)

  当测试方法的时间超过这个时间值时测试就会失败。(注意超时了报的是Errors,如果是值错了是Failures)。

 

附上程序例子:

  其中让加法的时间延迟500毫秒。

package com.bijian.study;public class Calculator{    public int add(int a, int b)    {        try        {            Thread.sleep(500);        }        catch (InterruptedException e)        {            e.printStackTrace();        }        return a + b;    }    public int subtract(int a, int b)    {        return a - b;    }    public int multiply(int a, int b)    {        return a * b;    }    public int divide(int a, int b) throws Exception    {        if (0 == b)        {            throw new Exception("除数不能为0");        }        return a / b;    }}

测试类代码:

  加法方法测试加入了时间限制,导致超过时间时发生错误。

  加入了除法除以零的抛出异常测试。

package com.bijian.study;import static org.junit.Assert.assertEquals;import org.junit.After;import org.junit.AfterClass;import org.junit.Before;import org.junit.BeforeClass;import org.junit.Test;public class CalculatorTest {private Calculator cal = null;@BeforeClasspublic static void globalInit() {System.out.println("global Init invoked!");}@AfterClasspublic static void globalDestroy() {System.out.println("global Destroy invoked!");}@Beforepublic void init()// setUp(){cal = new Calculator();System.out.println("init --> cal: " + cal);}@Afterpublic void destroy()// tearDown(){System.out.println("destroy");}@Test(timeout = 1000)public void testAdd() {System.out.println("testAdd");int result = cal.add(3, 5);assertEquals(8, result);}@Testpublic void testSubtract() {System.out.println("testSubtract");int result = cal.subtract(1, 6);assertEquals(-5, result);}@Testpublic void testMultiply() {System.out.println("testMultiply");int result = cal.multiply(5, 9);assertEquals(45, result);}@Test(expected = Exception.class)public void testDivide() throws Exception {cal.divide(1, 0);}}

 

文章来源:http://www.cnblogs.com/mengdd/archive/2013/04/13/3019278.html

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客