针对section-02章节的代码,编写的测试用例,测试用例使用了junit spring-boot-starter-test和mockit。测试用例在src/test/java目录下,测试用例内有对应的注释说明。 本章节以section-02为基础,因此需要现有可以运行section-02的环境。
如果没有PostgreSQL Server,请先安装一份。可从http://www.postgres.org下载。 创建一个数据库,名为tvseries,并在此数据库内创建2个表,建表语句可参考sql.sql文件。 修改application.yml中的数据库连接字符串
mvn test
所在类 | 方法 | 说明 |
---|---|---|
TvSeriesServiceTest | testGetAllWithoutMockit | 没有使用mockit来做桩模块替代掉数据访问层时,判断测试是否成功的条件比较难编写,这是个负面例子。 |
TvSeriesServiceTest | testGetAll | |
TvSeriesServiceTest | testGetOne | |
AppTests | contextLoads | 一个空测试用例 |
AppTests | testGetAll | GET方法的测试,数据访问层被桩模块代替 |
AppTests | testAddSeries | POST方法的测试,数据访问层被桩模块代替 |
AppTests | testFileUpload | MockWebMvc模拟文件上传,来测试文件上传的例子,内有如何修改某个spring bean属性的语句。 |
要进行单元测试,junit是必须的,如果被测部分涉及到spring的内容,还需要spring-boot-starter-test, 为了隔绝底层对上层的影响,此例子使用了 mockito 来制作测试的壮模块。
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
测试用例里如果只测试services,不需要启动spring boot的web服务,则在测试用例类上增加这2个注解就够了:
@RunWith(SpringRunner.class)
@SpringBootTest
如果需要启动spring boot的web服务来测试,则还需要再增加一个注解 @AutoConfigureMockMvc
,
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
增加这个注解后会启动spring boot 的 web服务,可以通过http调用来测试,把spring boot对controller的自动调用和返回结果的转换也加入到测试中去。