Spring mvc中集成Junit4测试

来源:互联网 发布:slax linux定制中文版 编辑:程序博客网 时间:2024/06/11 13:30

相信各位程序猿在开发过程中都会使用junit,

一下就是我对于junit的个人总结:

Junit 单元测试能够很轻易的对单个类进行测试,相对于在每个类中增加了一个main方法,它是一种无状态或者状态确定的单元测试,对于测试含有大量的复杂的类之间有依赖关系的测试,还是比较麻烦,而spring mvc提供了大量类之间的管理,使类之间的关系完全透明化,显然,如果junit4 能够支持spring mvc的单元测试,那么无疑给开发带来了效率的极大提高。目前junit4 能够不但能够支持spring ioc的单元测试还能够支持spring mvc的测试。

下面介绍如何通过junit4 对spring ioc进行单元测试

maven依赖包

<dependency>    <groupId>junit</groupId>    <artifactId>junit</artifactId>    <version>4.11</version>    <scope>test</scope></dependency>
测试类
<pre name="code" class="java">/**     * @filename User.java       * @date 2016年10月26日      */package com.mjkf.demo.domain.model; /**       * @author farrell     * @date 2016年10月26日    */ public class User {    private Integer id;        private Integer userId;        private String name;        private Integer age;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public Integer getUserId() {        return userId;    }    public void setUserId(Integer userId) {        this.userId = userId;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @Override    public String toString() {        return "User [id=" + id + ", userId=" + userId + ", name=" + name + ", age=" + age + "]";    }}

然后就是spring的配置文件,以下就不做过多的介绍了

直接上junit代码

/**     * @filename MainTest.java      * @version www.mindai.com   * @date 2016年10月25日      */package test.mjkf;import java.util.List;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.mjkf.demo.domain.model.User;import com.mjkf.demo.service.IUserService;import com.mjkf.framework.mybatis.mapper.entity.Example;import com.mjkf.framework.mybatis.mapper.entity.Example.Criteria;/**       * @author farrell     * @date 2016年10月25日    */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath*:spring/applicationContext.xml" })public class MainTest {@AutowiredIUserService userService;@Testpublic void test(){ List<User> users = userService.findAll();for (User user : users) {System.out.println(user.toString());} 
}}

整理一下junit注解的含义

@Test:使用该注解的方法为测试方法,自动运行时能够识别并被执行
包含两个参数:expected=XXXException.class 期望出现的异常
timeout=xxx 设定程序运行的超时时间
@Ignore:被忽略的测试方法
@Before:在每个测试方法之前运行
@After: 在每个测试方法之后运行
@BeforeClass:在所有测试开始之前运行
@AfterClass:在所有测试开始之后运行

以上几个就是Junit 4的关键注解,熟练使用这几个注解,将来的测试用例编写肯定能事半功倍。
注意:@Before与@BeforeClass的区别
@Before会加在每个方法前执行,即有几个@Test就会执行几遍。
@BeforeClass 只在所有测试之前执行,只会执行一次。并且@BeforeClass修饰的方法必须是公有的静态方法(public static )。
@After和@AfterClass也类似
每个测试类中这四个注解不能重复使用,一个方法只能从这四个注解中挑选其中一个。


      





0 0