单元测试模块-老旧Spring项目应该如何进行单元测试(小白篇)

版权声明:禁止转载 https://blog.csdn.net/qq_36505948/article/details/89159636

一、介绍

目前开发项目中,对于全部使用springBoot项目,并且从零开始开发,自动继承junit优质集成测试框架并不多见,至少在大部分公司中仍然需要对老代码进行维护,因此如何对改造代码进行测试,便成为了一个问题。

可以说,项目开发中,对于系统开发,分析占据了40%的精力,开发占据了30%,测试与维护占据了剩下的30%!

以下提供如何快速进行单元测试的简单代码模板!(当前内容仅作为小白入门,属于拾慧之言)

二、案例?(测试spring老项目)

1、引入依赖

往maven中引入如下相关jar包,保证测试的正常:


		<!--对spirng集成测试一些隐藏问题的兼容-->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>
		<!--json库 -->
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>2.8.3</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.3</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>2.8.3</version>
		</dependency>

2、引入基础测试类

测试类只需要根据老项目的基本路径和相关配置文件的位置进行首次配置,后面可以频繁地使用:

import lombok.extern.slf4j.Slf4j;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

@RunWith(SpringJUnit4ClassRunner.class)//调用继承测试框架
@ContextConfiguration(locations={"classpath*:/spring-context*.xml","classpath*:/spring-mvc*.xml","classpath*:/mybatis*.xml"})
//为spring的容器进行初始化,加载对应的配置文件
@WebAppConfiguration
public class BaseJunit {

    /**
     * 基础方法,可以手动进行一些初始化方法的调用
     */
}

 3、建立对应的项目测试类 :

 个人习惯是针对不同的controller类和service都建立对应的测试类,目前的IDEA也集成了相关的快捷键,可以快速到达:

@Slf4j
public class MonthSaServiceTest  extends BaseJunit{
    /**
     * 重点项目导入仓储
     */
    @Resource
    private TbPmImportantDao   tbPmImportantDao;

    @Test
    public void findDoneList() {
        TbPmImportant  tbPmImportant=new TbPmImportant();
        tbPmImportant.setcYear("2019");
        tbPmImportant.setcMon("04");
        tbPmImportant.setcStaffCode("800414");

        List<TbPmImportant> tbPmImportantList = tbPmImportantDao.selectByStaffCodeAndYearAndMonth(tbPmImportant);
        log.info(tbPmImportantList.toString());
    }
}

4、关于测试

一个好的开发测试,是从存在依赖关系(组合,聚合,继承,实现),功能单元方方面面的地方都开始渗透的。一般情况下,对于一个项目需要进行两个方面的测试,两个方面的验证,这样的系统才算是合格的。即是:

------->单元测试:是指针对代码层面的测试,详情见第一篇测试文章

------->功能测试:是指针对功能模块的测试,也即是我们常说的controller

------->上线测试:技术验证(产前验证方案)

------->上线测试:业务验证(产前验证方案)

(上线测试的一切测试均为验证你的项目和代码是没问题的,而不是为了让你进行纠错~)

猜你喜欢

转载自blog.csdn.net/qq_36505948/article/details/89159636