首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

JUnit4中一些高级特征讲解

2012-09-06 
JUnit4中一些高级特性讲解  一、 高级Fixture  上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@Af

JUnit4中一些高级特性讲解
  一、 高级Fixture

  上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@After,我们来看看他们是否适合完成如下功能:有一个类是负责对大文件(超过 500兆)进行读写,他的每一个方法都是对文件进行操作。换句话说,在调用每一个方法之前,我们都要打开一个大文件并读入文件内容,这绝对是一个非常耗费时间的操作。如果我们使用@Before和@After,那么每次测试都要读取一次文件,效率及其低下。这里我们所希望的是在所有测试一开始读一次文件,所有测试结束之后释放文件,而不是每次测试都读文件。JUnit的作者显然也考虑到了这个问题,它给出了@BeforeClass 和 @AfterClass两个Fixture来帮我们实现这个功能。从名字上就可以看出,用这两个Fixture标注的函数,只在测试用例初始化时执行 @BeforeClass方法,当所有测试执行完毕之后,执行@AfterClass进行收尾工作。在这里要注意一下,每个测试类只能有一个方法被标注为 @BeforeClass 或 @AfterClass,并且该方法必须是Public和Static的。

  二、 限时测试

  如果被测试类中函数有Bug,是个死循环:

 import static org.junit.Assert.assertEquals;  import org.junit.Test;  import org.junit.runner.RunWith;  import org.junit.runners.Parameterized;  import org.junit.runners.Parameterized.Parameters;  import java.util.Arrays;  import java.util.Collection;  @RunWith(Parameterized.class)  public class SquareTest ...{  private static Calculator calculator = new Calculator();  private int param;  private int result;  @Parameters  public static Collection data() ...{  return Arrays.asList(new Object[][]...{  ...{2, 4},  ...{0, 0},  ...{-3, 9},  });  }  //构造函数,对变量进行初始化           @Test public void wordFormat4DB(){             assertEquals(expected, WordDealUtil.wordFormat4DB(target));         } public TestWordDealUtilWithParam(String expected , String target){             this.expected = expected;             this.target = target;         } }

热点排行