zoukankan      html  css  js  c++  java
  • java~springboot~h2数据库在单元测试中的使用

    单元测试有几点要说的

    事实上springboot框架是一个tdd框架,你在进行建立项目时它会同时建立一个单元测试项目,而我们的代码用例可以在这个项目里完成,对于单元测试大叔有以下几点需要说明一下:

    1. 单元测试的用例之间不要有相互依赖
    2. 单元测试数据来源为本地,不要访问外部资源,外部数据库也是不行的
    3. 对于集成测试,每个控制器对应一个测试类,它们可以有统一的抽象基类,用来存储公用的属性,如数据对象,http对象等

    引入相关依赖包

    testCompile('com.h2database:h2')
    

    下面对h2数据库的配置

    spring:
      profiles: integTest
      cloud.config.enabled: false
      h2:
        console:
          enabled: true
          path: /h2
      datasource:
        url: jdbc:h2:mem:testdb;MODE=MYSQL;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
        driver-class-name: org.h2.Driver
        username: sa
        password: sa
        schema-username: sa
        schema-password: sa
        data-username: sa
        data-password: sa
        schema: classpath:db/*.sql
        data: classpath:data/*.sql
        initialization-mode: always
        platform: h2
    

    下面直接写单元测试即可,业务层不用修改,数据库根据profile去选择mysql还是h2

    @RunWith(SpringRunner.class)
    @ActiveProfiles("integTest")
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public abstract class ControllerTestBase {
    
      protected MockMvc mockMvc;
    
      @Autowired
      protected ObjectMapper objectMapper;
    
      @Autowired
      private WebApplicationContext webApplicationContext;
    
      @Before
      public void setUp() {
        mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
      }
    
    
    public class CustomerTagsControllerTest extends ControllerTestBase {
      @Autowired
      CustomerTagsService customerTagsService;
    
      @Test
      public void getCustomerTags() throws Exception {
        mockMvc.perform(
            get("/api/tags")
                .accept(MediaType.APPLICATION_JSON_UTF8))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$[0].tagsDescription").value("未接"));
      }
    }
    
    

    对于h2在单元测试里的使用就说这么说,有不清楚的可以给大叔留言!

  • 相关阅读:
    出版文字作品报酬规定(收藏)
    关于Delphi7 的XML说明
    我做的XML验证的测试记录
    印刷常用名词
    验证XLM数据合法性(收藏)
    关于.Net操作XML相关类
    我的性格
    webpack学习笔记一
    汇编语言内存变量的地址
    Linux 汇编语言(GNU GAS汇编)开发指南
  • 原文地址:https://www.cnblogs.com/lori/p/9684946.html
Copyright © 2011-2022 走看看