基于Junit框架的单元测试实例,纯干货!

发表于:2020-9-18 10:45

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:倚天飞狐    来源:博客园

分享:
  1.maven引入
  <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>
  2.新建基类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("每个测试运行后的启动方法");
      }
  }


  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号