【Java】辨析JUnit4中的@AfterClass、@BeforeClass、@after、@before
常用注解
JUnit4使用Java5中的注解(annotation),下面会列举一些JUnit4常用Annotation:
- @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
- @After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
- @Test:测试方法,在这里可以测试期望异常和超时时间
- @Test(expected=ArithmeticException.class):检查被测方法是否抛出ArithmeticException异常
- @Ignore:忽略的测试方法
- @BeforeClass:针对所有测试,只执行一次,且必须为static void
- @AfterClass:针对所有测试,只执行一次,且必须为static void
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass → @Before → @Test → @After → @AfterClass
每一个测试方法的调用顺序为: @Before → @Test → @After
测试代码
public class JUnit4Test { @Before public void before() { System.out.println("@Before"); } @Test /** *Mark your test cases with @Test annotations. *You don’t need to prefix your test cases with “test”. *tested class does not need to extend from “TestCase” class. */ public void test() { System.out.println("@Test"); assertEquals(5 + 5, 10); } @Ignore @Test public void testIgnore() { System.out.println("@Ignore"); } @Test(timeout = 50) public void testTimeout() { System.out.println("@Test(timeout = 50)"); assertEquals(5 + 5, 10); } @Test(expected = ArithmeticException.class) public void testExpected() { System.out.println("@Test(expected = Exception.class)"); throw new ArithmeticException(); } @After public void after() { System.out.println("@After"); } @BeforeClass public static void beforeClass() { System.out.println("@BeforeClass"); }@AfterClass public static void afterClass() { System.out.println("@AfterClass"); }}
测试结果
@BeforeClass
@Before
@Test(timeout = 50)
@After
@Before
@Test(expected = Exception.class)
@After
@Before
@Test
@After
@AfterClass
辨析篇
@BeforeClass and @AfterClass | @Before and @After |
---|---|
在一个类中只可以出现一次 | 在一个类中可以出现多次,即可以在多个方法的声明前加上这两个Annotaion标签,执行顺序不确定 |
方法名不做限制 | 方法名不做限制 |
在类中只运行一次 | 在每个测试方法之前或者之后都会运行一次 |
@BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行;@AfterClass 父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行 | @Before父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行;@After父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行 |
必须声明为public static | 必须声明为public 并且非static |
所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。 | 所有标识为@After 的方法都一定会被执行,即使在标识为 @Before 或者 @Test 的方法抛出异常的的情况下也一样会。 |
转载说明
转载用途:学习、分享
作者:fuzhihong0917
来源:https://www.cnblogs.com/fuzhihong0917/p/6081004.html
【Java】辨析JUnit4中的@AfterClass、@BeforeClass、@after、@before相关推荐
- JUnit4 中@AfterClass @BeforeClass @after @before的区别
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation: @Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeCl ...
- eclipse java 测试_java-在Eclipse中“未找到JUnit测试”
java-在Eclipse中"未找到JUnit测试" 因此,我是JUnit的新手,我们必须将其用于作业分配. 我们的教授给我们提供了一个具有一个测试类的项目BallTest.jav ...
- java从字符串中提取数字
1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只 ...
- JAVA Web项目中所出现错误及解决方式合集(不断更新中)
JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...
- Java类Demo中存在_Java中的数据类型转换
先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...
- Java数据结构一 —— Java Collections API中的表
1.Collection接口 位于java.util包中,以下是重要的部分. 1 public interface Collection<AnyType> extends Iterable ...
- Java之戳中痛点 - (4)i++ 和 ++i 探究原理
先看一个例子: package com.test;public class AutoIncrement {public static void main(String[] args) {int a=7 ...
- IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)
晚上在用IDEA的时候遇到了报错: Error:(33, 35) java: -source 7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式) ...
- return true Java_[Java教程]js中return,return true,return false的用法及区别
[Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...
最新文章
- 修饰符 public、 private 和 protected和区别
- 熟悉sublime text3
- 理解遗传算法循环交叉
- mysql connect by_Mysql主从库搭建
- 关于ORACLE 10g中“ORA-12541:TNS:no listener”的问题解决方案
- python决策树id3算法_python实现决策树ID3算法
- CDH- Hive HWI 配置
- 【Java】关键词strictfp解析
- pc显示器分辨率 前端_2020电竞显示器推荐
- linux 关于虚拟内存的几个系统调用
- java 求整_Java Math类的常用方法,求整运算
- ubuntu12.04 启动mysql_ubuntu 12.04 mysql 改utf8 启动不了
- 《从零开始做抖音》 程然
- MySQL3:连接查询、子查询及正则表达式查询
- 荣耀手机两个android文件夹,华为手机文件管理中,这几个文件夹可以任意删除,其他的千万不要乱删!...
- spo0lsv病毒分析
- 可爱的狮子(lion)
- 微信如何解绑小程序_微信小程序解绑事件,微信小程序解除绑定
- 一分钟带你了解最真实的服务器
- Android 之Loader(加载器)
热门文章
- 20172324 2017-2018-2《程序设计与数据结构》实验三报告
- .NET简谈事务、分布式事务处理
- 【代码升级】【iCore3 双核心板】例程二十八:FSMC实验——读写FPGA
- 简单的Flash GUI工具(Simple Flash GUI Tool)
- java中ArrayList用法详解,基本用法(含增删改查)
- 程序固化到优盘中_将Windows 8/10 系统装进优盘
- mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
- mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
- php xml 返回 微信,php版微信返回用户text输入的方法
- linux 设置dns缓存周期,如何解决DNS缓存时间问题