首页 > 代码库 > Junit4学习笔记--方法的执行顺序
Junit4学习笔记--方法的执行顺序
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构造函数被调用BeforeMethodtestPlusSelf:use dataAfterMethod构造函数被调用BeforeMethodtestAdd:not use dataAfterMethod构造函数被调用BeforeMethodtestPlusSelf:use dataAfterMethod构造函数被调用BeforeMethodtestAdd:not use dataAfterMethod构造函数被调用BeforeMethodAfterMethod构造函数被调用BeforeMethodtestAdd:not use dataAfterMethodAfterClass
分析:
@Before在每一次方法调用之前都会被执行
@After在每一次方法调用之后都会执行
@BeforeClass 在Test类方法执行之前会被调用
@AfterClass 在Test类方法执行之后会被执行
带有参数化的运行过程:假设参数化data()方法中的数组个数为n个
1.运行@BeforeClass修饰的静态方法
2.运行Test类的构造函数
3.运行@Before修饰得方法
4.运行@Test修饰的所有方法
5.运行@After修饰的方法
回到2步骤,重复执行n次。每次取参数化data()方法返回的一个数组值作为运行参数
6.运行@AfterClass修饰的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。