Spring Boot 提供了許多實用工具和註解來幫助測試應用程序,主要包括如下兩個模塊。java
spring-boot-test:支持測試的核心內容。spring
spring-boot-test-autoconfigure:支持測試的自動化配置。微信
開發進行只要使用 spring-boot-starter-test
啓動器就能引入這些 Spring Boot 測試模塊,還能引入一些像 JUnit, AssertJ, Hamcrest
及其餘一些有用的類庫,具體以下所示。框架
下面是 Maven 的依賴關係圖。spring-boot
以上這些都是 Spring Boot 提供的一些比較經常使用的測試類庫,若是上面的還不能知足你的須要,你也能夠隨意添加其餘的以上沒有的類庫。工具
添加 Maven 依賴post
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>1.5.10.RELEASE</version> <scope>test</scope> </dependency>
一、 要讓一個普通類變成一個單元測試類只須要在類名上加入 @SpringBootTest 和 @RunWith(SpringRunner.class) 兩個註釋便可。單元測試
二、 在測試方法上加上 @Test 註釋。測試
若是測試須要作 REST 調用,能夠 @Autowire 一個 TestRestTemplate。url
@RunWith(SpringRunner.class) @SpringBootTest public class BBTestAA { @Autowired private TestRestTemplate testRestTemplate; @Test public void testDemo() { ... } }
GET請求測試
@Test public void get() throws Exception { Map<String,String> multiValueMap = new HashMap<>(); multiValueMap.put("username","Java技術棧"); ActResult result = testRestTemplate.getForObject("/test/getUser?username={username}",ActResult.class,multiValueMap); Assert.assertEquals(result.getCode(),0); }
POST請求測試
@Test public void post() throws Exception { MultiValueMap multiValueMap = new LinkedMultiValueMap(); multiValueMap.add("username","Java技術棧"); ActResult result = testRestTemplate.postForObject("/test/post",multiValueMap,ActResult.class); Assert.assertEquals(result.getCode(),0); }
文件上傳測試
@Test public void upload() throws Exception { Resource resource = new FileSystemResource("/home/javastack/test.jar"); MultiValueMap multiValueMap = new LinkedMultiValueMap(); multiValueMap.add("username","Java技術棧"); multiValueMap.add("files",resource); ActResult result = testRestTemplate.postForObject("/test/upload",multiValueMap,ActResult.class); Assert.assertEquals(result.getCode(),0); }
文件下載測試
@Test public void download() throws Exception { HttpHeaders headers = new HttpHeaders(); headers.set("token","javastack"); HttpEntity formEntity = new HttpEntity(headers); String[] urlVariables = new String[]{"admin"}; ResponseEntity<byte[]> response = testRestTemplate.exchange("/test/download?username={1}",HttpMethod.GET,formEntity,byte[].class,urlVariables); if (response.getStatusCode() == HttpStatus.OK) { Files.write(response.getBody(),new File("/home/javastack/test.jar")); } }
掃描關注咱們的微信公衆號,乾貨天天更新。