1.之前一直认为setUp tearDown在测试类中只执行一次,今天测试了下,才知道,
每个测试方法前执行一次setUp,执行方法后执行tearDown
看测试代码:
import static junit.framework.Assert.*;
import junit.framework.TestCase;
public class CalculatorTest extends TestCase {
private Calculator cal = null;
protected void setUp() throws Exception {
System.out.println("setup....");
cal = new Calculator();
}
protected void tearDown() throws Exception {
System.out.println("teardown....");
}
public void testAdd() {
assertEquals(5, cal.add(2, 3));
}
public void testMinus() {
assertEquals(8, cal.minus(10, 2));
}
public void testMultiply() {
assertEquals(20, cal.multiply(10, 2));
}
public void testDivide() {
assertEquals(5, cal.divide(10, 2));
}
}
测试结果
写道
setup....
teardown....
setup....
teardown....
setup....
teardown....
setup....
teardown....
teardown....
setup....
teardown....
setup....
teardown....
setup....
teardown....
2.有没有办法在整个类执行前 执行一次,整个类执行完后执行一次呢?
Junit3没有提供这样方法,junit4有的
看代码
import junit.framework.TestCase;
import org.junit.AfterClass;
import org.junit.BeforeClass;
public class BeforeClassTest extends TestCase{
@BeforeClass
public void testBeforeClass(){
System.out.println("before class");
}
public void testAdd() {
}
public void testMinus() {
}
public void testMultiply() {
}
public void testDivide() {
}
@AfterClass
public void testAfterClass(){
System.out.println("after class...");
}
}
执行结果
写道
before class
after class...
after class...
就执行了一次。
注意@BeforeClass和@AfterClass的方法也要以test开头