spring boot 单元测试_单元测试Assertions断言 Java版

spring boot 单元测试_单元测试Assertions断言 Java版_第1张图片

为什么要使用Assertions断言呢?

  1. 表达式上更加直观和清晰;
  2. 提升代码的可读性;
  3. 测试代码变得更加容易维护

引入依赖:

testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test', version: '2.1.2.RELEASE'testCompile group: 'org.assertj', name: 'assertj-core', version: '3.11.1'

Assertions断言的运用:

@RunWith(SpringRunner.class)@WebAppConfiguration@SpringBootTest@Transactional@Sql("classpath:/sql/admin/dynamicCode/updateDynamicCodeTests.sql")public class UpdateDynamicCodeTests extends BaseDynamicCodeControllerTests { @Autowired private DynamicCodeService dynamicCodeService; /** * 动态码更新-正常态 */ @Test public void updateDynamicCodeSuccessfully() throws Exception { Long id = LongUtil.toLong(1); // 更新前的动态码信息 DynamicCodeResponse originalDynamicCode = dynamicCodeService.getDynamicCodeInfo(id); String responseContent = mMockMvc.perform( MockMvcRequestBuilders.put(BASE_HOST + "/api/admin/dynamic/code/" + id) .contentType(MediaType.APPLICATION_JSON_UTF8) .sessionAttr(AUTHORIZED_ATTRIBUTE_NAME, getAuthSession())) .andExpect(MockMvcResultMatchers.status().isOk()) .andDo(MockMvcResultHandlers.print()) .andReturn().getResponse().getContentAsString(); prettyPrintJson(responseContent); //assert response JsonNode jsonNode = mObjectMapper.readTree(responseContent); // 更新成功后的动态码信息 DynamicCodeResponse dynamicCode = jsonNode.get("data").traverse(mObjectMapper).readValueAs(DynamicCodeResponse.class); Assertions.assertThat(originalDynamicCode).isNotEqualTo(null); Assertions.assertThat(dynamicCode).isNotEqualTo(originalDynamicCode);Assertions.assertThat(dynamicCode.getActive()).isEqualTo(originalDynamicCode.getActive());Assertions.assertThat(dynamicCode.getPlanId()).isEqualTo(originalDynamicCode.getPlanId());Assertions.assertThat(dynamicCode.getCode()).isNotEqualTo(originalDynamicCode.getCode());Assertions.assertThat(dynamicCode.getIsSub()).isEqualTo(originalDynamicCode.getIsSub()); Assertions.assertThat(dynamicCode.getId()).isEqualTo(originalDynamicCode.getId()); }}
spring boot 单元测试_单元测试Assertions断言 Java版_第2张图片

最后,对测试类上标注的5个注解进行解释说明:

  1. @RunWith(SpringRunner.class) 表明单元测试运行借助于SpringRunner 驱动器
  2. @WebAppConfiguration 表明这是一个Web类型的单元测试,即Controller级别的Tests
  3. @SpringBootTest 表明这是一个Spring Boot 项目的单元测试
  4. @Transactional 事务回滚
  5. @Sql("classpath:/sql/admin/dynamicCode/updateDynamicCodeTests.sql") 单元测试的数据准备,建议每个table的insert操作前,都使用 truncate table tableName; 将数据清空,以免发生主键冲突等状况。建议连接本地MySQL数据库进行单元测试!
spring boot 单元测试_单元测试Assertions断言 Java版_第3张图片

你可能感兴趣的:(spring,boot,单元测试)