You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否将Spring Boot与TestNG搭配使用?官方有无相关测试示例?

Spring Boot与TestNG搭配使用指南

当然可以把Spring Boot和TestNG搭配使用!虽然JUnit确实是Spring Boot官方文档和示例里的常客,但TestNG的支持完全没问题,官方也明确提供了相关的集成方案。

一、依赖配置

首先需要调整你的项目依赖,因为spring-boot-starter-test默认引入了JUnit Jupiter,所以我们需要排除它,再添加TestNG的依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.testng</groupId>
    <artifactId>testng</artifactId>
    <scope>test</scope>
</dependency>

如果是Gradle项目,配置类似:

testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude group: 'org.junit.jupiter'
}
testImplementation 'org.testng:testng'

二、编写TestNG测试用例

Spring的核心测试注解(比如@SpringBootTest、@DataJpaTest、@WebMvcTest等)都能和TestNG的注解完美兼容。举个简单的例子:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;

@SpringBootTest
public class UserServiceTest {

    @Autowired
    private UserService userService;

    @BeforeClass
    public void setUp() {
        // 测试前的初始化操作,比如插入测试数据
        userService.createUser("testUser", "test@example.com");
    }

    @Test
    public void testGetUserByUsername() {
        User user = userService.getUserByUsername("testUser");
        assertEquals(user.getEmail(), "test@example.com");
    }
}

在这个例子里,我们用TestNG的@BeforeClass做初始化,@Test标记测试方法,同时借助Spring的@Autowired注入Bean,和JUnit的使用逻辑几乎一致,只是换了TestNG的注解而已。

三、官方支持与示例情况

你说得没错,Spring Boot的大部分官方示例确实用的是JUnit,但官方明确支持TestNG:

  • 在Spring Boot官方文档的「Testing」章节里,专门提到了TestNG是受支持的测试框架,并且说明了如何调整依赖进行集成。
  • 虽然没有单独的TestNG专属示例项目,但所有Spring测试注解的用法都可以直接迁移到TestNG上,核心逻辑和JUnit版本完全相同,只是替换测试框架的注解即可。

内容的提问来源于stack exchange,提问作者SpringUser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:30:33