常用注解

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相关推荐

  1. JUnit4 中@AfterClass @BeforeClass @after @before的区别

    JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:  @Before:初始化方法   对于每一个测试方法都要执行一次(注意与BeforeCl ...

  2. eclipse java 测试_java-在Eclipse中“未找到JUnit测试”

    java-在Eclipse中"未找到JUnit测试" 因此,我是JUnit的新手,我们必须将其用于作业分配. 我们的教授给我们提供了一个具有一个测试类的项目BallTest.jav ...

  3. java从字符串中提取数字

    1.做一下操作时会一般会用到提取数字操纵: a.列表中有翻页,当新添加的数据不是放在第一条或者最后一条时,需要翻页并循环找到对应的那条数据 b.当新添加的数据放在第一条或者最后一条时,则不需要翻页,只 ...

  4. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  5. Java类Demo中存在_Java中的数据类型转换

    先来看一个题: Java类Demo中存在方法func0.func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{ float fu ...

  6. Java数据结构一 —— Java Collections API中的表

    1.Collection接口 位于java.util包中,以下是重要的部分. 1 public interface Collection<AnyType> extends Iterable ...

  7. Java之戳中痛点 - (4)i++ 和 ++i 探究原理

    先看一个例子: package com.test;public class AutoIncrement {public static void main(String[] args) {int a=7 ...

  8. IDEA报错解决:Error:(33, 35) java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)

    晚上在用IDEA的时候遇到了报错: Error:(33, 35) java: -source 7 中不支持 lambda 表达式(请使用 -source 8 或更高版本以启用 lambda 表达式) ...

  9. 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 ...

最新文章

  1. 修饰符 public、 private 和 protected和区别
  2. 熟悉sublime text3
  3. 理解遗传算法循环交叉
  4. mysql connect by_Mysql主从库搭建
  5. 关于ORACLE 10g中“ORA-12541:TNS:no listener”的问题解决方案
  6. python决策树id3算法_python实现决策树ID3算法
  7. CDH- Hive HWI 配置
  8. 【Java】关键词strictfp解析
  9. pc显示器分辨率 前端_2020电竞显示器推荐
  10. linux 关于虚拟内存的几个系统调用
  11. java 求整_Java Math类的常用方法,求整运算
  12. ubuntu12.04 启动mysql_ubuntu 12.04 mysql 改utf8 启动不了
  13. 《从零开始做抖音》 程然
  14. MySQL3:连接查询、子查询及正则表达式查询
  15. 荣耀手机两个android文件夹,华为手机文件管理中,这几个文件夹可以任意删除,其他的千万不要乱删!...
  16. spo0lsv病毒分析
  17. 可爱的狮子(lion)
  18. 微信如何解绑小程序_微信小程序解绑事件,微信小程序解除绑定
  19. 一分钟带你了解最真实的服务器
  20. Android 之Loader(加载器)

热门文章

  1. 20172324 2017-2018-2《程序设计与数据结构》实验三报告
  2. .NET简谈事务、分布式事务处理
  3. 【代码升级】【iCore3 双核心板】例程二十八:FSMC实验——读写FPGA
  4. 简单的Flash GUI工具(Simple Flash GUI Tool)
  5. java中ArrayList用法详解,基本用法(含增删改查)
  6. 程序固化到优盘中_将Windows 8/10 系统装进优盘
  7. mongodb 去重查询 Java,mongodb篇二:mongodb克隆远程数据库,去重查询的命令及对应java语句...
  8. mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解
  9. php xml 返回 微信,php版微信返回用户text输入的方法
  10. linux 设置dns缓存周期,如何解决DNS缓存时间问题