C/C++教程

单元测试中JMock的简单使用

本文主要是介绍单元测试中JMock的简单使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

单元测试,前期代码准备

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.2.1.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.</groupId>
	<artifactId>jmockit</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>jmockit</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!-- 先声明jmockit的依赖 -->
		<dependency>
			<groupId>org.jmockit</groupId>
			<artifactId>jmockit</artifactId>
			<version>1.36</version>
			<scope>test</scope>
		</dependency>
		<!-- 再声明junit的依赖 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.9</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-collections4</artifactId>
			<version>4.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.9</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

  业务逻辑部分代码

package com.jmockit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class JmockitApplication {

	public static void main(String[] args) {
		SpringApplication.run(JmockitApplication.class, args);
	}

}


package com.jmockit;

import java.util.Map;

/**
 * @author Farben
 * @version 1.0
 * @date 2022/6/30 21:29
 */
public interface UserMapper {

    Map<String,Object> getMap();
}



package com.jmockit;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Farben
 * @version 1.0
 * @date 2022/6/30 21:39
 */
public class UserMapperImpl implements UserMapper{
    @Override
    public Map<String, Object> getMap() {
        Map<String, Object> result=new HashMap<>();
        result.put("name","小六子");
        result.put("sex","男");
        result.put("age","18");
        result.put("address","杭州");
        return result;
    }
}

  

package com.jmockit;

import java.util.Map;

/**
 * @author Farben
 * @version 1.0
 * @date 2022/6/30 21:25
 */
public interface UserService {

    Map<String,Object> test(String name,String pwd);
}

  

package com.jmockit.service.impl;

import com.jmockit.UserMapper;
import com.jmockit.UserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Farben
 * @version 1.0
 * @date 2022/6/30 21:25
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public Map<String, Object> test(String name, String pwd) {
        Map<String, Object> resultMap=new HashMap<>();
        if (StringUtils.isEmpty(name)){
            return resultMap;
        }

        Map<String, Object> map = userMapper.getMap();
        map.put("pwd","123");


        return map;
    }
}

  工具类

package com.jmockit;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Farben
 * @version 1.0
 * @date 2022/6/30 21:23
 */
public class Utils {

    public static Map<String,Object> getUser(){

        Map<String,Object> param=new HashMap<>();
        param.put("pwd","123");
        return param;

    }
}

  

package com.jmockit.controller.front;

import com.jmockit.UserService;
import com.jmockit.Utils;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

/**
 * @author Farben
 * @version 1.0
 * @date 2022/6/30 21:15
 */
public class TestController {


    @Autowired
    private UserService userService;

    @RequestMapping("/queryName")
    @ResponseBody
    public Map<String, Object> queryName(@RequestBody Map map){
        Map<String, Object> result=new HashMap<>();
        try {

            String name = MapUtils.getString(map, "name");
            if (StringUtils.isEmpty(name)){
                result.put("msg","名字为空");
                return result;
            }
            Map<String, Object> user = Utils.getUser();
            String pwd = user.get("pwd").toString();

            Map<String, Object> resultMap = userService.test(name, pwd);
            return resultMap;
        } catch (Exception e) {
            System.out.println("异常打印");
            return result;
        }


    }
}

  

 

 

 

 

 

 

 

 

 

 

 

package com.jmockit.controller.front;

import com.jmockit.UserService;
import com.jmockit.Utils;
import mockit.Expectations;
import mockit.Injectable;
import mockit.Mock;
import mockit.Tested;
import mockit.integration.junit4.JMockit;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.HashMap;
import java.util.Map;

import static org.junit.Assert.*;

@RunWith(JMockit.class)
public class TestControllerTest {


    @Tested
    private TestController testController;

    @Injectable
    private UserService userService;

    @Test
    public void testException() {

        Map<String,Object> param=new HashMap<>();
        param.put("name","test1992");

        Map<String,Object> user=new HashMap<>();
        user.put("pwd","999");

        String name="test1992";
        String pwd="999";

        Map<String, Object> map = new HashMap<>();
        map.put("address","武汉");

        new Expectations(Utils.class){
            {

                Utils.getUser();
                result=user;
            }
        };

        new Expectations(){
            {

                userService.test(name, pwd);
                result=new Exception("异常");
            }
        };

        testController.queryName(param);

    }


    @Test
    public void testEmpty() {

        Map<String,Object> param=new HashMap<>();
        param.put("name","");

        testController.queryName(param);

    }

    @Test
    public void queryName() {

        Map<String,Object> param=new HashMap<>();
        param.put("name","test1992");

        Map<String,Object> user=new HashMap<>();
        user.put("pwd","999");

        String name="test1992";
        String pwd="999";

        Map<String, Object> map = new HashMap<>();
        map.put("address","武汉");

        new Expectations(Utils.class){
            {

                Utils.getUser();
                result=user;
            }
        };

        new Expectations(){
            {

                userService.test(name, pwd);
                result=map;
            }
        };


        testController.queryName(param);

    }
}

  

 

 

 

 

 

 

 

 service类单元测试

package com.jmockit.service.impl;

import com.jmockit.UserMapperImpl;
import com.jmockit.Utils;
import mockit.Expectations;
import mockit.Injectable;
import mockit.Tested;
import mockit.integration.junit4.JMockit;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.HashMap;
import java.util.Map;

import static org.junit.Assert.*;
@RunWith(JMockit.class)
public class UserServiceImplTest {

    @Tested
    private UserServiceImpl userService;

    @Injectable
    private UserMapperImpl userMapper;

    @Test
    public void testParam() {
        String name="";
        String pwd="";

        userService.test(name,pwd);
    }


    @Test
    public void testMethod() {
        String name="admin";
        String pwd="111";
        Map<String,Object> param=new HashMap<>();
        param.put("pwd","123");
        new Expectations(){
            {
                userMapper.getMap();
                result=param;
            }
        };
        userService.test(name,pwd);
    }
}

  

 

这篇关于单元测试中JMock的简单使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!