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

JUnit4集成测试NamedJdbcTemplate:连接真实库测试Repository方法

配置JUnit4测试连接真实数据库测试RaRepository

测试类正确注解配置

因为你需要连接真实数据库并加载完整的Spring上下文,不要使用@DataJdbcTest(它默认使用内存数据库且仅加载JDBC相关Bean),而是使用以下注解组合:

@RunWith(SpringRunner.class)
@SpringBootTest
// 可选:添加该注解让测试结束后自动回滚事务,避免污染数据库
@Transactional
public class RaRepositoryTest {

    @Autowired 
    private RaRepository raRepository;

    @Test
    public void findFieldsByItemId(){
        List<String> itemsId = new ArrayList<>();
        itemsId.add("VZ203");
        List<raAttribute> raAttlist = raRepository.findFieldsByItemId(itemsId);
        Assert.assertEquals(2, raAttlist.size());
    }
}

注解说明

  • @RunWith(SpringRunner.class):指定JUnit4使用Spring测试运行器,负责加载Spring应用上下文。
  • @SpringBootTest:加载完整的Spring Boot应用上下文,包含数据源、Repository等所有Bean实例,确保能连接真实数据库。
  • @Transactional(可选):测试方法执行后自动回滚事务,避免测试操作修改真实数据库数据;如果需要保留测试数据,可移除该注解。

数据源配置确保生效

  1. 确保测试环境的配置文件(src/test/resources/application.properties)包含正确的数据库连接信息,示例:
spring.datasource.url=jdbc:mysql://localhost:3306/your_db_name
spring.datasource.username=db_user
spring.datasource.password=db_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

如果测试目录下没有该文件,Spring Boot会默认读取主目录(src/main/resources)下的application.properties配置。

代码注意事项

  • 你的RaRepository中rs.getString(ps_name)的ps_name需是数据库表abc的有效列名(比如"name"),否则会抛出SQL列不存在的异常,建议定义为常量避免拼写错误。
  • 确保raAttribute类有对应的构造函数能接收查询返回的列值,且类名符合Java规范(首字母大写,建议改为RaAttribute)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 12:20:50