Skip to content

单元测试

1. 添加依赖

首先,你需要在pom.xmlbuild.gradle文件中添加JUnit和Spring Test的依赖。对于Maven,你的pom.xml应该包含以下依赖:

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

对于Gradle,你应该在build.gradle文件中添加如下依赖:

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

2. 编写单元测试

在Spring Boot中,你可以使用JUnit进行单元测试。Spring Boot提供了一些注解和工具类来帮助你更容易地测试Spring组件,如@Service、@Controller等。

测试Service层

假设你有一个名为MyService的服务类,你可以这样编写测试类:

java
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import static org.junit.jupiter.api.Assertions.assertEquals;

@SpringBootTest
class MyServiceTest {

    @Autowired
    private MyService myService;

    @Test
    void testMyMethod() {
        String result = myService.myMethod();
        assertEquals("Expected Result", result);
    }
}

测试Controller层

如果你想要测试控制器,可以使用@WebMvcTest注解,它会启动一个嵌入式的Servlet容器,并只初始化你的控制器以及必要的bean:

java
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.web.servlet.MockMvc;

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;

@WebMvcTest(MyController.class)
class MyControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    void testMyEndpoint() throws Exception {
        mockMvc.perform(get("/my-endpoint"))
               .andExpect(status().isOk())
               .andExpect(content().string("Expected Content"));
    }
}

3. 运行测试

在IDE中运行测试通常很简单,只需右击测试类或方法并选择“Run”即可。如果是在命令行下,可以使用Maven或Gradle的测试任务来运行所有测试:

  • Maven: mvn test
  • Gradle: ./gradlew test