zoukankan      html  css  js  c++  java
  • 【Spring学习】在Spring+Maven环境中使用Junit Test

    在Spring+Maven环境中使用Junit Test

    前言

    以前我是很讨厌写测试代码的,总觉得测试用例是测试人员写的,现在想想自己真是Too yuong too simple,接触开发多了之后发现在开发中需要不断通过测试来发现某些路子的可行性,如果不写测试代码直接一股脑写下去,很可能代码写完了一运行发现到处都是坑。下面总结一下在SpringMVC和SpringBoot环境中的单元测试(Junit Test)的搭建和使用。

    SpringMVC中的单元测试

    加入依赖包

    首先需要在pom.xml中加入junit依赖,其中scope限定了junit包的使用范围是test环境:

    <dependency>
    	<groupId>junit</groupId>
    	<artifactId>junit</artifactId>
    	<version>4.11</version>
    	<!-- 表示开发的时候引入,发布的时候不会加载此包 -->
    	<scope>test</scope>
    </dependency>
    
    <dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-test</artifactId>
    		<version>4.0.2.RELEASE</version>
    		<scope>test</scope>
    </dependency>
    

    下图是我在IntelliJ IDEA中的项目包的架构,我们需要在test包下进行单元测试编写。

    编写测试基类

    由于我们在单元测试中可能需要对SpringMVC中的service、dao层进行调用,但是我们又知道在Spring中对象的创建时交给容器的,不需要我们手动创建、实例化对象,那么就需要引入配置文件进行上下文的初始化。所以为了避免每次写一个测试类都要进行相关的配置操作,我们直接写一个父类,然后每个测试类继承该类就可以达到简化的目的了。

    BaseTest.java如下,其中@Before和@After注解都是junit提供的,其含义写在代码的注释中了:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration({"classpath:spring-mvc.xml","classpath:spring-mybatis.xml"})
    public class BaseTest {
        @Before
        public void init() {
            //在运行测试之前的业务代码
        }
        @After
        public void after() {
            //在测试完成之后的业务代码
        }
    }
    

    编写具体测试类

    写完测试基类后,就可以开始写真正的单元测试了,下面是一个简单的示例:

    public class HelloTest extends BaseTest {
    
        @Test
        public void getTicketInfo() {
        	System.out.println("hello");
    }
    

    我们可以看到在IDEA中可以直接对单元测试的某个方法进行运行,不用编译项目和启动服务器就可以达到对业务代码的功能测试,可见其便利程度。

    SpringBoot中的单元测试

    SpringBoot中使用Junit和SpringMVC基本类似,只需要改动一些配置即可。

    加入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-test</artifactId>
        <version>1.5.2.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>4.3.7.RELEASE</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    

    编写测试基类

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class BaseTest {
        @Before
        public void init() {
            
        }
        
        @After
        public void after() {
            
        }
    }
  • 相关阅读:
    cocos2d-x 屏幕适配
    C# 做一个指定概率的抽奖程序
    Cocos2d-x 开发小记(二):控件
    Cocos2d-x 开发小记(一):基本动作
    Cocos2d-x v2.2.2版本+Win7+VS2010环境搭建
    使用C#从XML中批量删除指定节点
    使用NSIS脚本制作一个安装包
    C++解析命令行参数(仿C语言args)
    关于 Source Engine 2007 网络通信的分析
    关于OpenGL游戏全屏模式的设置
  • 原文地址:https://www.cnblogs.com/puyangsky/p/6661638.html
Copyright © 2011-2022 走看看