單元測試

1. 依賴

Ref:https://spring.io/guides/gs/testing-web/

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>

    <!-- use 2.8.0 for Java 7 projects -->
    <version>3.8.0</version>
    <scope>test</scope>
</dependency>

2. 標記

最新版的用法:

  • @RunWith(SpringRunner.class)
  • @SpringBootTest --尋找SpringBootApplication 的實例。
@RunWith(SpringRunner.class)
@SpringBootTest
public class MgpApplicationTests {
}

SpringBootTest.WebEnvironment:

  • MOCK。MOCK —提供一个Mock的Servlet环境,内置的Servlet容器并没有真实的启动,主要搭配使用@AutoConfigureMockMvc
  • RANDOM_PORT。提供一个真实的Servlet环境,也就是说会启动内置容器,然后使用的是随机端口
  • DEFINED_PORT。这个配置也是提供一个真实的Servlet环境,使用的默认的端口,如果没有配置就是8080

3. 庫

AssertJ

import static org.assertj.core.api.Assertions.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;

4. 測試點

4.1 控制器

控制器不為空

4.2 WEB 請求

  • TestRestTemplate
  • @LocalServerPort
  • MockMvc
  • WebApplicationContext

results matching ""

    No results matching ""