Junit4学习笔记--方法的执行顺序
2014-07-30 21:08
316 查看
package com.lt.Demo.TestDemo; import java.util.Arrays; import java.util.Collection; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import static org.junit.Assert.*; @RunWith(Parameterized.class) public class CalculatorTest { private int param; private int result; @Parameters public static Collection data() { return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9 }, }); } Calculator calculator = new Calculator(); public CalculatorTest(int param,int result) { this.param = param; this.result = result; System.out.println("构造函数被调用"); } @BeforeClass public static void testBeforeClass() { System.out.println("BeforeClass"); } @Before public void init() throws ArithmeticException { System.out.println("BeforeMethod"); calculator.clear(); } @Test public void testPlusSelf() { calculator.PlusSelf(param); assertEquals(result, calculator.getResult()); System.out.println("testPlusSelf:use data"); } @Test public void testAdd() { int a = 10; int b = 100; calculator.add(a, b); int expectAnswer = 110; System.out.println("testAdd:not use data"); assertEquals(expectAnswer, calculator.getResult()); } @After public void testAfter() { System.out.println("AfterMethod"); } @AfterClass public static void testAfterClass() { System.out.println("AfterClass"); } }
运行结果:
BeforeClass 构造函数被调用 BeforeMethod testPlusSelf:use data AfterMethod 构造函数被调用 BeforeMethod testAdd:not use data AfterMethod 构造函数被调用 BeforeMethod testPlusSelf:use data AfterMethod 构造函数被调用 BeforeMethod testAdd:not use data AfterMethod 构造函数被调用 BeforeMethod AfterMethod 构造函数被调用 BeforeMethod testAdd:not use data AfterMethod AfterClass
分析:
@Before在每一次方法调用之前都会被执行
@After在每一次方法调用之后都会执行
@BeforeClass 在Test类方法执行之前会被调用
@AfterClass 在Test类方法执行之后会被执行
带有参数化的运行过程:假设参数化data()方法中的数组个数为n个
1.运行@BeforeClass修饰的静态方法
2.运行Test类的构造函数
3.运行@Before修饰得方法
4.运行@Test修饰的所有方法
5.运行@After修饰的方法
回到2步骤,重复执行n次。每次取参数化data()方法返回的一个数组值作为运行参数
6.运行@AfterClass修饰的方法
相关文章推荐
- 关于SQLServer2005的学习笔记——约束、Check、触发器的执行顺序
- C++学习笔记-8-函数执行的顺序
- MFC学习笔记.day02-创建窗口全过程,MFC执行顺序,BUTTON控件,对象与窗口关系
- 创业计划书学习笔记二——创业计划书的目录结构与执行概览部分的写作方法
- Checklists学习日志之UITableView的全部属性、方法以及代理方法执行顺序
- 关于SQLServer2005的学习笔记——约束、Check、触发器的执行顺序
- js执行顺序——学习笔记
- 嵌入式学习笔记--关于ARM中SWP指令的执行顺序问题【待验证】
- Java学习笔记-------执行语句为什么必须要放在方法里面???
- 关于继承构造函数执行顺序、override及new如何执行的学习笔记
- [Junit] 测试方法执行顺序
- STL学习笔记之顺序容器sort方法里的谓词参数的理解
- MVC学习笔记---MVC框架执行顺序
- 学习总结:java面试方法重写详解,静态代码块和构造方法执行顺序问题
- MFC学习笔记之:MFC最基本动作(如创建窗口,点击取消等)函数的执行顺序
- sql执行顺序(mysql学习笔记)
- c#学习笔记二:构造函数执行顺序
- android学习12——重载SurfaceView一些方法的执行顺序
- .net学习笔记---lambda表达式(自执行方法)
- Junit测试方法执行顺序