
文章目录
一、目标
- 学会基于AssertJ的断言技术;
- 学会基于AssertJ-DB的数据库断言技术;
- 学会基于JMockit的mock技术;
- 学会内存和数据库的造数;
- 学会集成Maven进行单元测试、集成测试的执行;
- 学会查看测试覆盖率;
二、断言技术
断言库包含很多,比如junit自带的、hamcrest等,这里推荐使用AssertJ,看它的官网就知道了,宣称fluent assertions java library。
2.1 核心库断言
AssertJ的断言采用assertThat(result)的形式,等同于then(result),这两种方式使用上没有区别;我们需要在pom中引入如下依赖:
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.15.0</version>
<scope>test</scope>
</dependency>
下面列出常见的断言用法,其它的用法可以参考依赖库学习使用。
-
对文本的断言;
assertThat(result).isEqualTo("apple"); assertThat(result).isEqualToIgnoringCase("apple"); assertThat(result).contains("apple"); assertThat(result).containsIgnoringCase("apple"); assertThat(result).startsWith("apple"); assertThat(result).matches("^[A-Za-z0-9]{8}$"); assertThat(result).hasSize(10); assertThat(result).containsSequence("a", "p", "l"); ... -
对数字的断言;
assertThat(result).isGreaterThanOrEqualTo(100); assertThat(result).isCloseTo(100.0, Offset.offset(0.000001)); assertThat(result).isBetween(90.0, 91.0), assertThat(result).isNaN(); ... -
对日期的断言;
assertThat(result).isAfter(startDate); assertThat(result).isBefore("2020-01-01"); assertThat(result).isInSameMonthAs("2019-12-01"); ... -
对集合的断言;
assertThat(result).hasSize(3); assertThat(result).contains("apple", "orange"); assertThat(result).doesNotcontain("apple", "orange"); assertThat(result).containsExactly("apple", "orange"); assertThat(result).startsWith("apple"); assertThat(result).endsWith("orange"); assertThat(result).doesNotContainNull(); assertThat(result).doesNotHaveDuplicates(); assertThat(result).isNotEmpty(); assertThat(result).isNullOrEmpty(); ... assertThat(result).hasSize(2<

本文介绍如何使用AssertJ进行断言测试,使用JMockit进行Mock测试,以及如何利用Maven进行测试集成,包括测试报告和覆盖率的查看。
最低0.47元/天 解锁文章
2万+





