packagecom.lt.Demo.TestDemo;importjava.util.Arrays;importjava.util.Collection;importorg.junit.After;importorg.junit.AfterClass;importorg.junit.Before;importorg.junit.BeforeClass;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.junit.runners.Parameterized;importorg.junit.runners.Parameterized.Parameters;import static org.junit.Assert.*;
@RunWith(Parameterized.class)public classCalculatorTest {private intparam;private intresult;
@Parameterspublic staticCollection data() {return Arrays.asList(new Object[][] { { 2, 4 }, { 0, 0 }, { -3, 9}, });
}
Calculator calculator= newCalculator();public CalculatorTest(int param,intresult) {this.param =param;this.result =result;
System.out.println("构造函数被调用");
}
@BeforeClasspublic static voidtestBeforeClass() {
System.out.println("BeforeClass");
}
@Beforepublic void init() throwsArithmeticException {
System.out.println("BeforeMethod");
calculator.clear();
}
@Testpublic voidtestPlusSelf()
{
calculator.PlusSelf(param);
assertEquals(result, calculator.getResult());
System.out.println("testPlusSelf:use data");
}
@Testpublic voidtestAdd() {int a = 10;int b = 100;
calculator.add(a, b);int expectAnswer = 110;
System.out.println("testAdd:not use data");
assertEquals(expectAnswer, calculator.getResult());
}
@Afterpublic voidtestAfter() {
System.out.println("AfterMethod");
}
@AfterClasspublic static voidtestAfterClass() {
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个
[email protected]
2.运行Test类的构造函数
[email protected]
[email protected]
[email protected]
回到2步骤,重复执行n次。每次取参数化data()方法返回的一个数组值作为运行参数
[email protected]
原文:http://www.cnblogs.com/limingluzhu/p/3879142.html