zoukankan      html  css  js  c++  java
  • Junit单元测试

    JUnit简介

    JUnit 是用于编写和运行可重复的自动化测试的开源测试框架,这样可以保证我们的代码按预期工作。JUnit 可广泛用于工业和作为支架(从命令行)或IDE(如 IDEA)内单独的 Java 程序。主要是用于后台的方法测试,避免重复的启动项目。

    断言测试预期结果。
    测试功能共享通用的测试数据。
    测试套件轻松地组织和运行测试。
    图形和文本测试运行。


    JUnit 用于测试:

    整个对象
    对象的一部分 - 交互的方法或一些方法
    几个对象之间的互动(交互)


    JUnit 特点

    JUnit 是用于编写和运行测试的开源框架。
    提供了注释,以确定测试方法。
    提供断言测试预期结果。
    提供了测试运行的运行测试。
    JUnit 测试让您可以更快地编写代码,提高质量
    JUnit 是优雅简洁。它是不那么复杂以及不需要花费太多的时间。
    JUnit 测试可以自动运行,检查自己的结果,并提供即时反馈。没有必要通过测试结果报告来手动梳理。
    JUnit 测试可以组织成测试套件包含测试案例,甚至其他测试套件。
    Junit 显示测试进度的,如果测试是没有问题条形是绿色的,测试失败则会变成红色。


    JUnit 注解

    @BeforeClass 全局只会执行一次,而且是第一个运行
    @Before 在测试方法运行之前运行
    @Test 测试方法
    @After 在测试方法运行之后允许
    @AfterClass 全局只会执行一次,而且是最后一个运行
    @Ignore 忽略此方法
    @AfterClass和BeforeClass即是为了满足测试中,那些体积非常大,但只要一次初始化的代码块!
    @RunWith:修改测试运行器
    @Rollback(true):事务回滚,默认true

    测试方法必须是静态

    注意:编写测试类的原则:

    ①测试方法上必须使用@Test进行修饰
    ②测试方法必须使用public void 进行修饰,不能带任何的参数
    ③新建一个源代码目录来存放我们的测试代码,即将测试代码和项目业务代码分开
    ④测试类所在的包名应该和被测试类所在的包名保持一致
    ⑤测试单元中的每个方法必须可以独立测试,测试方法间不能有任何的依赖
    ⑥测试类使用Test作为类名的后缀(不是必须)
    ⑦测试方法使用test作为方法名的前缀(不是必须)

    测试套件的使用@RunWith

    测试套件就是将几个测试类放在一个入口文件中,这些类可以一起执行。这里就需要使用到@RunWith注解来修改测试运行器。

    新建一个入口类SuiteTest,该类不能包含其它方法。更改测试运行器为Suite.class,然后将要一起执行的类作为数组传入到Suite.SuiteClasses()中。

    junit 单元测试事务会自动回滚。通过@Rollback(true)注解来实现,默认是true,事务会回滚,可以不写。false时事务不会回滚,数据会写到数据库中。

    package com.xiaolyuh.service;
    
    import java.util.Date;
    
    import org.junit.Assert;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.annotation.Rollback;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.springframework.transaction.annotation.Transactional;
    
    import com.alibaba.fastjson.JSON;
    import com.xiaolyuh.entity.RewardCouponDetail;
    import com.xiaolyuh.mapper.RewardCouponDetailMapper;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class RewardCouponDetailServiceTest{
    
    private static final Logger logger = LoggerFactory.getLogger(RewardCouponDetailServiceTest.class);
    
    @Autowired
    private RewardCouponDetailMapper rewardCouponDetailMapper;
    
    
      @Test
      @Transactional
      @Rollback(true)// 事务自动回滚,默认是true。可以不写
      public void TestCustomer(){
        RewardCouponDetail rewardCouponDetail = new RewardCouponDetail();
        rewardCouponDetail.setRewardInfoId(1L);
        rewardCouponDetail.setCouponId("1");
        rewardCouponDetail.setCouponDetailId(1L);
        rewardCouponDetail.setCreateTime(new Date());
        rewardCouponDetailMapper.insert(rewardCouponDetail);
        logger.info(JSON.toJSONString(rewardCouponDetail));
        Assert.assertNotNull(rewardCouponDetail.getId());
      }
    
    }
     
  • 相关阅读:
    AJAX的使用
    django.template.exceptions.TemplateDoesNotExist: login.html报错
    cookie、session
    关于zipfile解压出现的字符编码问题
    使用jquery清空input 文本框中的内容
    DVWA SQL-injection 附python脚本
    关于itchat用法的一篇博文
    记录两个python itchat的用法博客网址
    pyinstaller 打包.exe文件记录遇到的问题
    用python编写的excel拆分小工具
  • 原文地址:https://www.cnblogs.com/zeussbook/p/11883712.html
Copyright © 2011-2022 走看看