当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

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

发表于: 2014-09-25   作者:bijian1013   来源:转载   浏览:
摘要: 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

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;

	@BeforeClass
	public static void globalInit() {
		System.out.println("global Init invoked!");
	}

	@AfterClass
	public static void globalDestroy() {
		System.out.println("global Destroy invoked!");
	}

	@Before
	public void init()// setUp()
	{
		cal = new Calculator();
		System.out.println("init --> cal: " + cal);
	}

	@After
	public 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);
	}

	@Test
	public void testSubtract() {
		System.out.println("testSubtract");
		int result = cal.subtract(1, 6);
		assertEquals(-5, result);
	}

	@Test
	public 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

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

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
C#当中Attribute(中文注解属性)已经知道这个概念已经很久很久了,不过悲剧的是在实际项目当中重来没
自从有了并发,原有的程序哪儿哪儿都不好了——小白语录。 并发事务所导致的问题: 当同一个应用程
测试类方法代码如下: /** * 保存ContactEO实体单元测试 * * <span style="font-family: " couri
测试类方法代码如下: /** * 保存ContactEO实体单元测试 * * <span style="font-family: " couri
8个月没写博客了- -,一来是有不想继续干开发的想法,二来是赖的写,三来还是不想总结。所以为了继
8个月没写博客了- -,一来是有不想继续干开发的想法,二来是赖的写,三来还是不想总结。所以为了继
7 test
#HBase export HBASE_HOME=/home/puppet/hbase/hbase-0.96.1.1-cdh5.0.1 export PATH=$PATH:$HBASE_
8 test
**test** *斜体* ~~删除线~~ 分割线---(***) 在空白行下方添加 --- 大标题 === 小标题- --- # 1一级
9 Test
缩进不对啊。 public class Test { protected static boolean isDebug = false; public static void
10 test
test 最近配置一下android 2.1,发觉sdk的安装方式改了。 可能很多开始接触android的找到的文档都是
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号