博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JUnit 4中元数据的用法
阅读量:6000 次
发布时间:2019-06-20

本文共 2231 字,大约阅读时间需要 7 分钟。

JUnit4已经不会霸道的要求你必须继承自TestCase了,而且测试方法也不必以test开头了,只要以@Test元数据来描述即可。

JUnit 4中还引入了一些其他的元数据,下面一一介绍:

import junit.framework.TestCase;import org.junit.After;import org.junit.Before;import org.junit.Test;import static org.junit.Assert.*;public class AddOperationTest extends TestCase{          public AddOperationTest() {      }      @Before      public void setUp() throws Exception {      }      @After      public void tearDown() throws Exception {      }      @Test      public void add() {          System.out.println(\"add\");          int x = 0;          int y = 0;          AddOperation instance = new AddOperation();          int expResult = 0;          int result = instance.add(x, y);          assertEquals(expResult, result);      }    }

 

@Before:
使用了该元数据的方法在每个测试方法执行之前都要执行一次。
@After:
使用了该元数据的方法在每个测试方法执行之后要执行一次。
注意:@Before和@After标示的方法只能各有一个。这个相当于取代了JUnit以前版本中的setUp和tearDown方法,当然你还可以继续叫这个名字,不过JUnit不会霸道的要求你这么做了。

 

@Parameters

使用该数据元则代表下面方法返回的为参数

public static Collection data()
{
return Arrays.asList(new Object[][] {
{2,2},{10,10},{5,5}});
}

@Test(expected=*.class)
JAVA中的异常处理也是一个重点,因此你经常会编写一些需要抛出异常的函数。那么,如果你觉得一个函数应该抛出异常,但是它没抛出,这算不算Bug呢?这当然是Bug,并JUnit也考虑到了这一点,来帮助我们找到这种Bug。例如,我们写的计算器类有除法功能,如果除数是一个0,那么必然要抛出“除0异常”。因此,我们很有必要对这些进行测试。代码如下:

@Test(expected = ArithmeticException.class)  public void divideByZero() ...{calculator.divide(0);   }

如上述代码所示,我们需要使用@Test标注的expected属性,将我们要检验的异常传递给他,这样JUnit框架就能自动帮我们检测是否抛出了我们指定的异常。

@Test(timeout=xxx):
该元数据传入了一个时间(毫秒)给测试方法,
如果测试方法在制定的时间之内没有运行完,则测试也失败。
@ignore:
该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个String的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(“该方法还没有实现”),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。

 

@BeforeClass 和 @AfterClass

@Before和@After,我们来看看他们是否适合完成如下功能:有一个类是负责对大文件(超过500兆)进行读写,他的每一个方法都是对文件进行操作。换句话说,在调用每一个方法之前,我们都要打开一个大文件并读入文件内容,这绝对是一个非常耗费时间的操作。如果我们使用@Before和@After,那么每次测试都要读取一次文件,效率及其低下。这里我们所希望的是在所有测试一开始读一次文件,所有测试结束之后释放文件,而不是每次测试都读文件。JUnit的作者显然也考虑到了这个问题,它给出了@BeforeClass 和 @AfterClass两个Fixture来帮我们实现这个功能。从名字上就可以看出,用这两个Fixture标注的函数,只在测试用例初始化时执行@BeforeClass方法,当所有测试执行完毕之后,执行@AfterClass进行收尾工作。在这里要注意一下,每个测试类只能有一个方法被标注为@BeforeClass 或 @AfterClass,并且该方法必须是Public和Static的。

转载于:https://www.cnblogs.com/penghong2014/p/4281627.html

你可能感兴趣的文章
Android 蓝牙2.0的使用方法:
查看>>
linux 检查那个进程占用文件
查看>>
react
查看>>
原金立总裁卢伟冰加入小米,雷军发微博欢迎
查看>>
一对一直播源码成为下一个风口,但你知道它进展如何了吗?
查看>>
腾讯开源 Westore,1KB JS 覆盖状态管理与跨页通讯
查看>>
PostgreSQL 10.1 手册_部分 IV. 客户端接口_第 33 章 libpq - C 库_33.21. 例子程序
查看>>
JFinal-event v2.3.0 发布,简化 Event 事件类
查看>>
排序算法(十):基数排序
查看>>
iOS 性能优化
查看>>
Elasticsearch 6.1.0 启动过程
查看>>
Druid 1.0.29 发布,阿里数据库连接池
查看>>
Linux批量创建目录
查看>>
多次grep 没有看到输出
查看>>
c++学习笔记之继承篇
查看>>
笔记:nodejs中出现的错误码含义
查看>>
MySQL学习基础
查看>>
走进JavaWeb技术世界16:极简配置的SpringBoot
查看>>
Android开发教程 - 使用Data Binding(三)在Activity中的使用
查看>>
Swift 5 发布,ABI 终于稳定了
查看>>