junit单元测试

1.maven引入

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

  

1.新建基类BaseJunitTest.java

package c.a.s.junit.controller;


import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;

import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations = {"classpath:application-test.properties"})
public class BaseJunitTest {

    @BeforeClass
    public static void init() {
        System.out.println("开始测试...");
    }

    @AfterClass
    public static void after() {
        System.out.println("测试结束...");
    }
}

  3.JunitDemoTest.java

package c.a.s.junit.controller;

import c.a.s.api.user.bo.EsSearchCountQueryBO;
import c.a.s.api.user.bo.SoHistorySearchBO;
import c.a.s.api.user.service.EsSearchCountService;
import c.a.s.api.user.service.InitH2DataBaseService;
import com.alibaba.fastjson.JSONObject;
import com.ohaotian.plugin.base.bo.RspBaseBO;
import org.junit.*;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;

import java.util.List;

import static org.junit.Assert.assertEquals;

/**
 * 描述: junit单元测试demo
 * 公司: www.tydic.com
 * @author ningjianguo
 * @time  2020/8/27 15:18
*/
public class JunitDemoTest extends BaseJunitTest{
    Logger logger= LoggerFactory.getLogger(JunitDemoTest.class);
    @Autowired //创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中
    InitH2DataBaseService initH2DataBaseService;
    @MockBean  //对这个bean进行mock
    EsSearchCountService esSearchCountService;

    @Before
    public void setup() {
        logger.info("每个测试运行前的启动方法");
        //初始化sql,慎重执行
        String sql="DROP TABLE IF EXISTS TEST2;\n" +
                "CREATE TABLE TEST2 (\n" +
                "\tID INT PRIMARY KEY AUTO_INCREMENT,\n" +
                "\tNAME VARCHAR (255)\n" +
                ");\n" +
                "INSERT INTO TEST2(NAME) VALUES('name1');\n" +
                "INSERT INTO TEST2(NAME) VALUES('name2');\n" +
                "INSERT INTO TEST2(NAME) VALUES('name3');";
                initH2DataBaseService.initH2(sql);
    }

    @Test
    public void test1() throws Exception {
        String querySql="select * from TEST2 where NAME='name1'";
        //mock数据
        List<SoHistorySearchBO> list= JSONObject.parseArray("[{\"historySearch\":\"123\",\"searchType\":\"1\"},{\"historySearch\":\"1233\",\"searchType\":\"1\"}]",SoHistorySearchBO.class);
        Mockito.when(esSearchCountService.historySearch(Mockito.any(EsSearchCountQueryBO.class))).thenReturn(list);
        //代表执行具体某个方法
        RspBaseBO result=initH2DataBaseService.query(querySql);

        //断言
        assertEquals("0",result.getCode());
    }


    @After
    public void cleanup() {
        logger.info("每个测试运行后的启动方法");
    }
}

4.其他概念  

 stub,mock,spy

posted @ 2020-09-11 17:32  倚天飞狐  阅读(203)  评论(0)    收藏  举报