zoukankan      html  css  js  c++  java
  • 在Eclipse中使用JUnit4进行单元測试(0基础篇)

    本文绝大部分内容引自这篇文章:
    http://www.devx.com/Java/Article/31983/0/page/1

    我们在编写大型程序的时候,须要写成千上万个方法或函数,这些函数的功能可能非常强大,但我们在程序中仅仅用到该函数的一小部分功能,而且经过调试能够确定,这一小部分功能是正确的。可是,我们同一时候应该确保每个函数都全然正确,由于假设我们今后假设对程序进行扩展,用到了某个函数的其它功能,而这个功能有bug的话,那绝对是一件非常郁闷的事情。所以说,每编写完一个函数之后,都应该对这个函数的方方面面进行測试,这种測试我们称之为单元測试。传统的编程方式,进行单元測试是一件非常麻烦的事情,你要又一次写另外一个程序,在该程序中调用你须要測试的方法,而且细致观察执行结果,看看是否有错。正由于如此麻烦,所以程序猿们编写单元測试的热情不是非常高。于是有一个牛人推出了单元測试包,大大简化了进行单元測试所要做的工作,这就是JUnit4。本文简要介绍一下在Eclipse3.2中使用JUnit4进行单元測试的方法。

    首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元測试的快感!

    首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个可以简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元測试。这个类并非非常完美,我们有益保留了一些Bug用于演示,这些Bug在凝视中都有说明。该类代码例如以下:


    package andycpp;

    public class Calculator {
        
    private static int result; // 静态变量,用于存储执行结果
        public void add(int n) {
            result 
    = result + n;
        }

        
    public void substract(int n) {
            result 
    = result - 1//Bug: 正确的应该是 result =result-n
        }

        
    public void multiply(int n) {
        }
             // 此方法尚未写好
        public void divide(int n) {
            result 
    = result / n;
        }

        
    public void square(int n) {
            result 
    = n * n;
        }

        
    public void squareRoot(int n) {
            
    for (; ;) ;            //Bug : 死循环
        }

        
    public void clear() {     // 将结果清零
            result = 0;
        }

        
    public int getResult() {
            
    return result;
        }

    }

    第二步,将JUnit4单元測试包引入这个项目:在该项目上点右键,点“属性”,如图:



    在弹出的属性窗体中,首先在左边选择“Java Build Path”,然后到右上选择“Libraries”标签,之后在最右边点击“Add Library…”button,例如以下图所看到的:


    然后在新弹出的对话框中选择JUnit4并点击确定,如上图所看到的,JUnit4软件包就被包括进我们这个项目了。

        第三步,生成JUnit測试框架:在EclipsePackage Explorer中用右键点击该类弹出菜单,选择“New à JUnit Test Case”。例如以下图所看到的:


    在弹出的对话框中,进行对应的选择,例如以下图所看到的:


        点击“下一步”后,系统会自己主动列出你这个类中包括的方法,选择你要进行測试的方法。此例中,我们仅对“加、减、乘、除”四个方法进行測试。例如以下图所看到的:


    之后系统会自己主动生成一个新类CalculatorTest,里面包括一些空的測试用例。你仅仅须要将这些測试用例稍作改动就可以使用。完整的CalculatorTest代码例如以下:


    package andycpp;

    import static org.junit.Assert.*;
    import org.junit.Before;
    import org.junit.Ignore;
    import org.junit.Test;

    public class CalculatorTest {

        
    private static Calculator calculator = new Calculator();
        
        @Before
        
    public void setUp() throws Exception {
            calculator.clear();
        }


        @Test
        
    public void testAdd() {
            calculator.add(
    2);
            calculator.add(
    3);
            assertEquals(
    5, calculator.getResult());
        }


        @Test
        
    public void testSubstract() {
            calculator.add(
    10);
            calculator.substract(
    2);
            assertEquals(
    8, calculator.getResult());
        }


        @Ignore(
    "Multiply() Not yet implemented")
        @Test
        
    public void testMultiply() {
        }


        @Test
        
    public void testDivide() {
            calculator.add(
    8);
            calculator.divide(
    2);
            assertEquals(
    4, calculator.getResult());
        }

    }

    第四步,执行測试代码:依照上述代码改动完成后,我们在CalculatorTest类上点右键,选择“Run As à JUnit Test”来执行我们的測试,例如以下图所看到的:

    执行结果例如以下:


    进度条是红颜色表示发现错误,详细的測试结果在进度条上面有表示“共进行了4个測试,当中1个測试被忽略,一个測试失败”

                至此,我们已经完总体验了在Eclipse中使用JUnit的方法。在接下来的文章中,我会详解測试代码中的每个细节!
  • 相关阅读:
    Spring Boot (20) 拦截器
    Spring Boot (19) servlet、filter、listener
    Spring Boot (18) @Async异步
    Spring Boot (17) 发送邮件
    Spring Boot (16) logback和access日志
    Spring Boot (15) pom.xml设置
    Spring Boot (14) 数据源配置原理
    Spring Boot (13) druid监控
    Spring boot (12) tomcat jdbc连接池
    Spring Boot (11) mybatis 关联映射
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4496819.html
Copyright © 2011-2022 走看看