JUNIT单元测试

Jacuqeline ·
更新时间:2024-11-11
· 778 次阅读

  我们在大型程序开发工作的时候,需要写成千上万个方法,这些方法的功能可能很强大,但我们在程序中只用到该方法的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的。但是,我们同时应该确保每一个方法都完全正确,因为如果我们今后如果对程序进行扩展,用到了某个方法的其他功能,而这个功能有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 );   }



junit单元测试 junit 测试

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章