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修饰的方法

Junit4学习笔记--方法的执行顺序的更多相关文章

  1. MVC学习笔记---MVC框架执行顺序

    一.把路由添加到路由表, 二.注册ControllerBuilder(老板)和默认工厂(DefaultControllerFactory) 2.1默认工厂获取可以创建的Controller. 三.由于 ...

  2. 【原创】Junit4详解二:Junit4 Runner以及test case执行顺序和源代码理解

    概要: 前一篇文章我们总体介绍了Junit4的用法以及一些简单的测试.之前我有个疑惑,Junit4怎么把一个test case跑起来的,在test case之前和之后我们能做些什么? Junit4执行 ...

  3. 在Spring Bean的生命周期中各方法的执行顺序

    Spring 容器中的 Bean 是有生命周期的,Spring 允许在 Bean 在初始化完成后以及 Bean 销毁前执行特定的操作,常用的设定方式有以下十种: 通过实现 InitializingBe ...

  4. C#类中方法的执行顺序

    有些中级开发小伙伴还是搞不太明白在继承父类以及不同场景实例化的情况下,父类和子类的各种方法的执行顺序到底是什么,下面通过场景的举例来重新认识下方法的执行顺序: (下面内容涉及到了C#中的继承,构造函数 ...

  5. odoo开发笔记 -- 多个子类继承同一个父类方法的执行顺序

    场景描述: odoo模块化开发的架构理念,科学&高效, 可以让很多业务场景,尽可能松耦合:让开发人员的主要精力,关注在当前的业务逻辑: 所谓「前人栽树,后人乘凉」,模块整体好比一棵大树, 开发 ...

  6. Go语言学习笔记(1)——顺序编程

    Go语言学习笔记这一堆主要是<Go语言编程>(人民邮电出版社)的读书笔记.中间会穿插一些零碎的点,比如源码学习之类的.大概就是这样吧. 1. 顺序编程 1.1 变量 变量的声明: var ...

  7. junit4X系列源码--Junit4 Runner以及test case执行顺序和源代码理解

    原文出处:http://www.cnblogs.com/caoyuanzhanlang/p/3534846.html.感谢作者的无私分享. 前一篇文章我们总体介绍了Junit4的用法以及一些简单的测试 ...

  8. 算法笔记_017:递归执行顺序的探讨(Java)

    目录 1 问题描述 2 解决方案 2.1 问题化简 2.2 定位输出测试 2.3 回顾总结 1 问题描述 最近两天在思考如何使用蛮力法解决旅行商问题(此问题,说白了就是如何求解n个不同字母的所有不同排 ...

  9. java学习笔记 --- 方法

    一.方法  (1)方法:就是完成特定功能的代码块.   注意:在很多语言里面有函数的定义,而在Java中,函数被称为方法.  (2)格式:   修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 ...

随机推荐

  1. MFC/VC++ 响应回车键的实现

    在VC++中,要实现对回车键的响应实现,一般通过截获消息来响应,即通过处理BOOL PreTranslateMessage(MSG* pMsg)这个函数来处理 实现如下: BOOL PreTransl ...

  2. 指针做MAP的KEY的TEST

    用struct做map的key会需要"operator <"等等,还会出现奇怪的问题可能. 试了下用指针做key,看看效果: #include <iostream> ...

  3. win7下配置apache和php

    1.软件装备 PHP:http://php.net/downloads.php non-thread-safe是非安全线程主要与IIS搭配环境. thread-safe安全线程与Apache搭配环境. ...

  4. Java 读取Properties 配置文件

    方法一,使用 io 包中的 BufferedInputStream 以及 FileInputStream读入文件转成字符流,然后使用 lang 包中 的 Properties 的 load 方法进行读 ...

  5. AngularJs的UI组件ui-Bootstrap-Tooltip

    完整案例,参考http://www.cnblogs.com/pilixiami/p/5661600.html <!DOCTYPE html> <html ng-app="u ...

  6. wordpress 后台显示空白现象

    简单的说两句,出现此种现象的因素可能在于主题或者插件再或者是因为(恶意)插件(误更改)更改了某个重要的文件出现错误.本次我遇到的是插件的错误,具体是什么错误,我也没有去深究,重要的是结果! 使用排查的 ...

  7. 线程池ThreadPoolExecutor使用简介

    一.简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int ...

  8. windows服务启动 1053错误

    1.问题描述 今天在启动一个Windows服务时,服务启动不了,且提示:1053错误 那么是什么导致了1053错误呢? 2.他山之石 百度了一下,发现有人作出下面的解释并给出了解决方法: “常常是因为 ...

  9. 删除svn密码方法

    很多时候使用svn,我们需要切换svn账号,但是由于之前的账号已经选择了记住密码,那么我们应该如何删除svn密码来切换新的svn账号呢? 其实很简单,svn账号密码信息保存在电脑某一文件中,我们只要删 ...

  10. 解决Oracle clob字段数据过大问题

    select * from user_lobs where table_name='WX_MAIL';--SYS_LOB0001313121C00015$$ MB FROM user_segments ...