单元测试mysql切换到h2_java~springboot~h2数据库在单元测试中的使用

单元测试有几点要说的

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

单元测试的用例之间不要有相互依赖

单元测试数据来源为本地,不要访问外部资源,外部数据库也是不行的

对于集成测试,每个控制器对应一个测试类,它们可以有统一的抽象基类,用来存储公用的属性,如数据对象,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在单元测试里的使用就说这么说,有不清楚的可以给大叔留言!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值