SpringBoot 提供了对单元测试的内置支持,使得开发者能够轻松地编写和执行单元测试。在 SpringBoot 项目中,我们通常使用 JUnit 框架进行单元测试,并且配合 Mockito 或 Spring TestContext Framework 等工具来模拟依赖项或注入 Spring 管理的 bean。
以下是一个 Sp服务器托管ringBoot 单元测试的详细代码介绍:
首先,我们需要确保项目的 pom.xml
或 build.gradle
文件中包含了以下依赖:
对于 Maven 项目:
dependencies>
dependency>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-starter-testartifactId>
scope>testscope>
dependency>
dependency>
groupId>org.mockitogroupId>
artifactId>mockito-coreartifactId>
scope>testscope>
dependency>
dependencies>
build>
plugins>
plugin>
groupId>org.springframework.bootgroupId>
artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
对于 Gradle 项目:
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mockito:mockito-core'
}
test {
useJUnitPlatform()
}
假设我们有一个简单的 SpringBoot 控制器 HelloController
:
@RestController
public class HelloController {
private final HelloService helloService;
@Autowired
public HelloController(HelloService helloService) {
this.helloService = helloService;
}
@GetMapping("/hello")
public String hello() {
return helloService.sayHello();
}
}
以及对应的服务 HelloService
:
@Service
public class HelloService {
public String sayHello() {
return "Hello, World!";
}
}
现在,我们可以编写一个单元测试类来测试 HelloController
:
imp服务器托管ort org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;
import static org.mockito.Mockito.when;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@ExtendWith(MockitoExtension.class)
@WebMvcTest(HelloController.class) // 仅加载与 Web 层相关的组件
public class HelloControllerTest {
@Mock // 创建一个 HelloService 的模拟对象
private HelloService helloService;
@InjectMocks // 将模拟的 HelloService 注入到 HelloController 中
private HelloController helloController;
@Autowired // 自动注入 MockMvc 对象,用于发送 HTTP 请求并验证响应
private MockMvc mockMvc;
@Test
public void testHello() throws Exception {
// 设置当调用 sayHello 方法时返回的值
when(helloService.sayHello()).thenReturn("Hello, Test!");
// 发送 GET 请求到 /hello 端点
mockMvc.perform(get("/hello"))
// 验证响应状态码为 200
.andExpect(status().isOk())
// 验证响应内容是否为 "Hello, Test!"
.andExpect(content().string("Hello, Test!"));
}
}
在上面的代码中,我们使用了 @WebMvcTest
注解来仅加载与 Web 层相关的组件,这有助于加快测试速度。@Mock
注解用于创建一个 HelloService
的模拟对象,@InjectMocks
注解用于将模拟的 HelloService
注入到 HelloController
中。MockMvc
对象则用于发送 HTTP 请求并验证响应。
testHello
方法中,我们设置了当调用 helloService.sayHello()
方法时应该返回的值,并发送了一个 GET 请求到 `/
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
记一下第十节课的内容。 一.PHP语言中的if else判断 语法和c语言中非常类似,不再赘述,也可以使用if…elseif…elseif…else 1.True和False 2.=,==和=== 一个等号是赋值 两个等号是比较 三个等号是全等(内…