您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
JUNIT单元测试
作者:梅花瘦 发布时间:[ 2017/6/29 9:38:39 ] 推荐标签:单元测试 Junit

  我们在大型程序开发工作的时候,需要写成千上万个方法,这些方法的功能可能很强大,但我们在程序中只用到该方法的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个方法都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个方法的其他功能,而这个功能有bug的话,那是一件非常郁闷的事情。所以说,每编写完一个方法之后,都应该对这个方法的方方面面进行测试,这样的测试我们称之为单元测试。传统的编程方式,进行单元测试是一件很麻烦的事情,你要重新写另外一个程序,在该程序中调用你需要测试的方法,并且仔细观察运行结果,看看是否有错。正因为如此麻烦,所以程序员们编写单元测试的热情不是很高。于是有一个牛人推出了单元测试包,大大简化了进行单元测试所要做的工作,这是JUnit4。本文简要介绍一下在Eclipse中使用JUnit4进行单元测试的方法。
  一.测试环境的搭建:
  1. 被测试类的创建:

  首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都有说明。该类代码如下:
  public class Calculator {
  // 静态变量,用于存储运行结果
  private static double result;
  public void add(double n) {
  result = result + n;
  }
  //Bug: 正确的应该是 result = result-n
  public void substract(double n) {
  result = result - 1; 
  }
  public void multiply(double n) {
  // 此方法尚未写好
  }
  public void divide(double n) {
  result = result / n;
  }
  public void square(double n) {
  result = n * n;
  }
  //Bug : 死循环
  public void squareRoot(double n) {
  for (; ;) ;           
  }
  // 将结果清零
  public void clear() {
  result = 0;
  }
  public double getResult() {
  return result;
  }
  }
  2. 测试类的创建:
  在Eclipse中创建单元测试类:
  (1).New --> Junit Test Case

  (2).选择要覆盖的方法

  (3).生成模板:
  public class CalculatorTest {
  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
  }
  @AfterClass
  public static void tearDownAfterClass() throws Exception {
  }
  @Before
  public void setUp() throws Exception {
  }
  @After
  public void tearDown() throws Exception {
  }
  @Test
  public void testAdd() {
  fail("Not yet implemented");
  }
  @Test
  public void testSubstract() {
  fail("Not yet implemented");
  }
  @Test
  public void testMultiply() {
  fail("Not yet implemented");
  }
  @Test
  public void testDivide() {
  fail("Not yet implemented");
  }
  @Test
  public void testSquare() {
  fail("Not yet implemented");
  }
  @Test
  public void testSquareRoot() {
  fail("Not yet implemented");
  }
  @Test
  public void testClear() {
  fail("Not yet implemented");
  }
  @Test
  public void testGetResult() {
  fail("Not yet implemented");
  }
  }
  二、单元测试类的编写:
  1. 前置和后置方法设置:

  private static Calculator calculator;
  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
  calculator = new Calculator();
  }
  @AfterClass
  public static void tearDownAfterClass() throws Exception {
  calculator = null;
  }
  @Before
  public void setUp() throws Exception {
  calculator.clear();
  }
  @After
  public void tearDown() throws Exception {
  calculator.clear();
  }
  (2). 测试类的设置:   
  @Test
  public void testAdd() {
  calculator.add(2);
  calculator.add(3);
  assertEquals(5, calculator.getResult());
  }
  (3). 忽略位完成的测试类:@Ignore
  @Test
  @Ignore
  public void testSubstract() {
  fail("Not yet implemented");
  }
  (4). 测试:
  @Test(timeout  =   1000 )
  public void testSquare() {
  calculator.squareRoot( 4 );
  assertEquals( 2 , calculator.getResult());
  }
  (5). 异常测试:
  @Test(expected  =  ArithmeticException. class )
  public void testDivide() {
  calculator.divide( 0 );
  }

软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd