一、SpringBoot单元测试
单元测试,用来配合敏捷开发中的TDD(Test-Driven Development,测试驱动开发)。
添加pom依赖。
1 | <dependency> |
使用JUnit的Assert.assertXxx()断言方法来验证期望和实际是否一致。SpringBoot支持AssertJ类库。
JUnit断言 | AssertJ断言 |
---|---|
Assert.assertNotNull(“product is null”, product); | Assertions.assertThat(product).isNotNull(); |
Assert.assertEquals(“product.price is wrong”, 9000, product.getPrice()); | Assertions.assertThat(product.getPrice()).isEqualTo(9000); |
Assert.assertTrue(“delete failure”, result); | Assertions.assertThat(result).isTrue(); |
Assert.assertEquals(“productList.size is wrong”, 3, productList.size()); | Assertions.assertThat(productList).hasSize(3); |
测试时使用的注解
- @RunWith(SpringRunner.class)
- @SpringBootTest,和RunWith一起使用Junit和SpringBoot框架。
- @FixMethodOrder(MethodSorters.NAME_ASCENDING),测试顺序按照字符升序方式
- @Test ,每个单元测试的方法都带有
- @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT),随机暴露端口号,而不是默认的8080。
REST API测试
使用TestRestTemplate的getForObject、postForObject、exchange等方法进行API接口调用。
针对JSON断言,可使用JSONAssert来实现。
二、自动化测试
Postman
有人说Postman是个手工的测试工具呀,其实里面还是有些脚本化的东东的。
1、环境变量
新建一个url的环境,设置r1的变量值为“localhost:8080”,即可使用“”来用。
另外提供了timestamp、guid、randomInt等全局变量,当然也可自己新建全局变量。
2、测试脚本
请求地址栏下方有Pre-request Script和Tests选项卡,分别用于在发送请求前后执行。
在Pre-request Script前置脚本中,可以设置一些环境变量或全局变量。
1 | //设置环境变量 |
在Tests后置脚本中,可使用如下脚本,查看测试用例通过情况。
1 | tests["check_status"] =responseCode.code=200; |
另外可以使用runner从外部csv、json等格式的文件中读取数据,并进行迭代测试。
Newman
Newman是基于Node.js开发的工具,可通过命令行批量执行Postman中制作的测试用例。安装命令:
1 | $npm install newman --global |
自动化测试框架
可通过Jenkins调用Newman,实现REST API的自动化测试框架。构建中的Execute shell中输入Newman命令,设置测试报告和定时测试周期即可。该模块详情可查看Jenkins文档。
三、自动生成文档
Swagger
『Swagger』提供三款开源工具。
- Swagger Editor,编辑文档
- Swagger Codegen,生成代码
- Swagger UI,查看文档
Swagger Editor可使用docker安装,访问http://localhost:8080 即可访问。
1 | $ docker run -d -p 8080:8080 swaggerapi/swagger-editor |
Swagger Codegen,用于目前比较新颖的敏捷开发模式-文档驱动开发。可通过Codegen快速生成指定语言的服务端或客户端。
1 | $ brew install swagger-codegen #Mac安装 |
Swagger UI用来在浏览器中查看已发布的REST API文档。
Swagger和SpringBoot集成
1、添加pom依赖
1 | <dependency> |
2、配置文件
1 | swagger.api.title=REST API |
3、Controller前使用注解
1 |
4、浏览器访问http://localhost:8080/swagger-ui.html 查看文档。
apiDoc
Swagger并非最轻量级,且需要配置注解,对应用存在侵入性。可考虑用apiDoc替代。『apiDoc』基于Node.js,只需要在代码中使用注释(不是注解)就可定义REST API,并通过命令行工具生成API文档。
1 | $ npm instal apidoc -g #安装 |
对应的java中注释写法如下:
1 | /** |
如需要自动化,可将apiDoc命令放入Jenkins自动化构建过程中,自动生成文档。