springboot的test怎么用

avatar
作者
筋斗云
阅读量:0

Spring Boot提供了一个测试模块,使得编写和执行测试变得更加简单。为了使用Spring Boot的测试功能,你需要在项目中引入相关依赖。以下是如何在Maven和Gradle项目中添加Spring Boot Test依赖的方法:

Maven:

pom.xml文件中添加以下依赖:

<dependencies>     <!-- ...其他依赖... -->     <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-test</artifactId>         <scope>test</scope>     </dependency> </dependencies> 

Gradle:

build.gradle文件中添加以下依赖:

dependencies {     // ...其他依赖...     testImplementation 'org.springframework.boot:spring-boot-starter-test' } 

接下来,你可以编写测试类并使用Spring Boot Test提供的注解和工具。以下是一些常用的注解和工具:

  1. @SpringBootTest:这个注解用于启动Spring Boot应用程序的上下文。通常与@RunWith(SpringRunner.class)一起使用,以便在JUnit 4中运行测试。在JUnit 5中,你可以使用@ExtendWith(SpringExtension.class)
import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension;  @ExtendWith(SpringExtension.class) @SpringBootTest public class MyApplicationTests {     // ...测试方法... } 
  1. @WebMvcTest:这个注解用于测试Spring MVC控制器。它会加载Web层的上下文,但不会加载其他组件(如服务层、数据访问层等)。
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.test.context.junit.jupiter.SpringExtension;  @ExtendWith(SpringExtension.class) @WebMvcTest(MyController.class) public class MyControllerTests {     // ...测试方法... } 
  1. @DataJpaTest:这个注解用于测试JPA相关的组件,如Repository。它会加载数据访问层的上下文,但不会加载其他组件(如Web层、服务层等)。
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.junit.jupiter.SpringExtension;  @ExtendWith(SpringExtension.class) @DataJpaTest public class MyRepositoryTests {     // ...测试方法... } 
  1. @MockBean:这个注解用于在测试类中创建一个模拟的Bean。这对于测试时替换实际的Bean非常有用,例如,当你想要模拟一个外部服务或数据库时。
import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.test.context.junit.jupiter.SpringExtension;  @ExtendWith(SpringExtension.class) @SpringBootTest public class MyServiceTests {     @Autowired     private MyService myService;      @MockBean     private ExternalService externalService;      // ...测试方法... } 
  1. TestRestTemplate:这是一个用于测试RESTful Web服务的工具类。它可以发送HTTP请求并处理响应。
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.web.server.LocalServerPort; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit.jupiter.SpringExtension;  @ExtendWith(SpringExtension.class) @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class MyIntegrationTests {     @LocalServerPort     private int port;      @Autowired     private TestRestTemplate restTemplate;      // ...测试方法... } 

这只是Spring Boot Test提供的一些功能,还有更多其他功能和注解可以帮助你编写高质量的测试。你可以查阅官方文档以获取更多信息:https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-testing

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!