IDEA Junit测试SSM架构项目全过程(包含mockMvc部分)

Junit测试SSM项目,个人理解为两个部分,第一部分是对Service层和Mapper层的测试,第二部分是对Controller层的测试。

一,导入Maven需要的依赖

1、junit,版本为4.11

2、jsonassert,使用的是最新版本

二,新建测试文件夹

在main下,与java同级新建test文件,并设置为test source。

三,生成测试类

进入要测试的类,右键GO TO选择Test,然后勾选需要测试的方法,Idea会自动生成测试包和类在test文件夹下,以下测试代码针对已生成的测试类而言。

四,对Service和Mapper层测试

//配置spring和junit整合,这样junit在启动时就会加载spring容器
@RunWith(SpringJUnit4ClassRunner.class)//固定写法
//告诉junit spring的配置文件
@ContextConfiguration({"classpath:spring-mybatis.xml"})//spring与mybatis整合的配置文件
public class UserServiceTest{
    @Autowired
    private UserService userService;//注入需要测试的Service或Mapper,直接调用方法测试即可
   @Test
    public void selectByPrimaryKey() throws Exception {
        User user = userService.selectByPrimaryKey(1);
        System.err.println("UserServiceTest.selectByPrimaryKey , 32 : user = " + user);
    }
}

五、对Controller层测试

//配置spring和junit整合,这样junit在启动时就会加载spring容器
@RunWith(SpringJUnit4ClassRunner.class)
//告诉junit spring的配置文件
@ContextConfiguration(locations = {"classpath:spring-mvc.xml", "classpath:spring-mybatis.xml"})
//事务
@TransactionConfiguration(defaultRollback = true)
// 解决WebApplicationContext无法注入问题
@WebAppConfiguration
public class TaskControllerTest{
    private MockMvc mockMvc;
    @Autowired
    private WebApplicationContext wac;//为setup方法里第一种初始化方法自动注入
    @Autowired
    private TaskController taskController;//注入要测试的Controller

    @Before()  //这个方法在每个方法执行之前都会执行一遍
    public void setup() {
        //mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();  //初始化MockMvc对象
        mockMvc = MockMvcBuilders.standaloneSetup(taskController).build();//两种方式都可以初始化mockMvc,推荐用这种,上面的会自动跳转地址status判断方法无效
    }
    @Test
    public void getData() throws Exception {
        MvcResult result = mockMvc.perform(get("/taskCon/getData", 1)//url
                .param("id", "78"))//传入参数
                .andDo(MockMvcResultHandlers.print())//打印MvcResult信息
                .andExpect(content().json("{'taskType':2,'finishTime':'2018-01-15','submitTime':'2018-01-12','taskTime':'2018-01-17'}"))//测试规则,测试返回值是否为指定JSON
                .andExpect(status().isOk())//测试状态码
                .andReturn();//返回MvcResult
    }

以上两种测试方式,推荐自定义一个测试父类,实现所有注解,新的测试类只需要继承即可,不需要重复写注解。

六,异常处理
1、不能理解的异常,尝试在运行测试类之前,使用Build-BuildProject
2、java.lang.ExceptionInInitializerError,Caused by: java.util.MissingResourceException: Can’t find bundle for base name javax.servlet.LocalStrings, locale zh_CN
在Project Structure -> Modules -> Dependencies 添加Library -> Tomcat
3、注意Junit版本问题,与Spring的兼容性问题

猜你喜欢

转载自blog.csdn.net/weixin_38204723/article/details/79216671
今日推荐