java单元测试junit

进行单元测试则需要添加junit的依赖:

##JUnit is a unit testing framework for Java, created by Erich Gamma and Kent Beck.
##对于java来说JUnit是一个单元测试的框架
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.1</version>
            <scope>test</scope>
        </dependency>

在这里插入图片描述

首先先在java下面创建个类:
在这里插入图片描述

package com.ruozedata.hadoop.junit;

public class Cal {
    public int add(int a, int b){
        return a + b;
    }
    public int devide(int a, int b){
        //TODO... if判断0被除数不能为0
        return a/b;
    }
}

然后在test下面创建单元测试
在这里插入图片描述

Before和After:
一般开发代码中叫类名如果叫Cal,那么单元测试中,在类名的前面或者后面加上Test,如:CalTest

package com.ruozedata.hadoop.junit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import static org.junit.Assert.assertEquals;

/**
 * 单元测试的使用案例
 *
 * 遵循了一套执行标准:先执行setup,再执行test,再执行teardown
 * 这里使用了java里面的设计模式:模板模式
 *模板模式 就是定义好了步骤,第一步做什么、第二步做什么...,然后去执行
 * {
 *     step1 setup
 *     step2 test
 *     step3 teardown
 * }
 *
 * 不是说所有的测试都是测试人员干的
 * 单元测试:是开发人员干的
 *
 * 开发了一个类:类里面有很多方法
 * 每个方法都需要进行单元测试,并且一个方法可能需要多个单元测试进行多角度的测试
 *
 * 写的代码(含有单元测试)提交到git上面之后,
 * 测试人员再测试之前,会有自动化的测试工具Jenkins之类的
 * 会先跑单元测试,通过了之后才会进行打包、发布,然后再供QA测试人员进行测试
 *
 * setup和teardown是每个测试方法,都会在执行之前、执行之后去执行
 * 这是个典型的模板模式
 */
public class CalTest {
    Cal cal;

    /**
     * @ Before表示在某一个动作之前做的
     * 初始化的动作,建立MySQL连接、打开IO流等等
     */
    @Before
    public void setUp(){
        cal = new Cal();
        System.out.println("---setUp----");
    }

    //TODO...
    //@Test表示单元测试用例
    @Test
    public void testAdd(){
        System.out.println("---testAdd----");
        int result = cal.add(3, 6);
        //这里要加哥断言assert,断言:result是不是和期望值9是不是相等,
        //如果是9说明是通过的,如果不是说明有问题
        assertEquals(9,result);
    }

    //因为如果除数是0,那么会失败异常,
    //所以加了(expected = ArithmeticException.class)
    //这样的话如果除数是0,那么异常和自己期望的异常是一致的
    @Test(expected = ArithmeticException.class)
    public void testDevide(){
        System.out.println("---testDevide----");
        int result = cal.devide(10,0);
        //这里要加哥断言assert,断言:result是不是和期望值9是不是相等,
        //如果是9说明是通过的,如果不是说明有问题
        assertEquals(3,result);
    }


    /**
     * @ After表示在某一个动作之后做的
     * 资源释放操作:释放MySQL连接,关闭IO流等操作,和前面相对应
     */
    @After
    public void tearDown(){
        System.out.println("---tearDown----");
        cal = null;
    }
}

BeforeClass和AfterClass:

package com.ruozedata.hadoop.junit;

import org.junit.*;

import static org.junit.Assert.assertEquals;

/**
 * 在这个类里面,
 * BeforeClass只执行一次
 * AfterClass只执行一次
 *
 * Before和After是每个测试方法都执行一次
 */
public class CalTest02 {

    static Cal cal;

    @BeforeClass
    public static void setUpBeforClass(){
        System.out.println("---setUpBeforClass----");
        cal = new Cal();
    }

    @Before
    public void setUp(){
        System.out.println("---setUp----");
    }

    @Test
    public void testAdd(){
        System.out.println("---testAdd----");
        int result = cal.add(3, 6);
        //这里要加哥断言assert,断言:result是不是和期望值9是不是相等,
        //如果是9说明是通过的,如果不是说明有问题
        assertEquals(9,result);
    }

    @Test(expected = ArithmeticException.class)
    public void testDevide(){
        System.out.println("---testDevide----");
        int result = cal.devide(10,0);
        //这里要加哥断言assert,断言:result是不是和期望值9是不是相等,
        //如果是9说明是通过的,如果不是说明有问题
        assertEquals(3,result);
    }

    @After
    public void tearDown(){
        System.out.println("---tearDown----");
    }

    @AfterClass
    public static void tearDownAfterClass(){
        System.out.println("---tearDownAfterClass----");
        cal = null;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值