gpt4 book ai didi

java - 如何使用Java测试数据访问和SQL语句?

转载 作者:行者123 更新时间:2023-11-29 13:25:44 28 4
gpt4 key购买 nike

我有一个利用 Spring 进行 JDBC 访问的 DAO 方法。它计算卖家销售商品的成功率。

这是代码:

public BigDecimal getSellingSuccessRate(long seller_id) {
String sql = "SELECT SUM(IF(sold_price IS NOT NULL, 1, 0))/SUM(1)
FROM transaction WHERE seller_id = ?";
Object[] args = {seller_id};
return getJdbcTemplate().queryForObject(sql, args, BigDecimal.class);
}

我应该如何使用 JUnit 测试此方法或任何 DAO 方法?测试数据访问逻辑的最佳实践有哪些?我正在考虑针对加载了一些数据的嵌入式数据库进行测试,但我们不应该在生产环境上进行集成测试吗?

最佳答案

我们对单元测试所做的通常是在内存数据库中创建模式并对其运行查询。一些单元测试预先填充数据以检查查询是否返回预期结果。在简单的情况下,我们只是跳过该部分,只检查查询是否实际运行以及是否有拼写错误、缺少关系等。

这里可能出现的问题是,您的查询可能依赖于供应商特定的方言,这使得它们不可移植或很难移植。使用像 JPA 这样的抽象可以避免这些问题。

作为一般规则,避免使用存储过程、触发器或类似方法将(任何)逻辑放入数据库层,除非您有充分的理由这样做。将逻辑保留在应用程序中使其更加透明且更易于测试。

最好进行集成测试,以便验证应用程序的整体行为。 Spring 是测试中非常好的集成,因此使用 Spring 引导您的应用程序应该非常简单。

关于java - 如何使用Java测试数据访问和SQL语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20171018/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com