如何用本机JDBC SQL查询为DAO层编写单元测试用例?



我想为下面的代码段编写单元测试用例。当部署和代码覆盖率显示在仪表板上时,这些测试也将运行,因此不能使用本地DB模拟。

QCConstants。selectQuery =比;选择查询字符串

QCConstants。updateQuery =比;插入/删除查询字符串

public List<SomeModel> getData() {
Connection conn;
try {
conn = SQLDBConfig.getConnection();
PreparedStatement ps;
ResultSet rs;
ps = conn.prepareStatement(QCConstants.updateQuery);
ps.executeUpdate();
ps = conn.prepareStatement(QCConstants.selectQuery)
rs = ps.executeQuery();
List<SomeModel> list = new ArrayList();
while (rs.next()) {
SomeModel someModel = new SomeModel();
someModel.set_someId(rs.getInt(1));
someModel.set_someName(rs.getString(2));
someModel.set_someDesc(rs.getString(3));
list.add(someModel);
}
return list;
} catch (Exception e){
log.error("Exception occurred " + e.getMessage());
return null;
}
}

测试所有/某些代码是不可能或不可取的,原因是,质量需要花钱,它不是免费的。当然,质量差的代码也要花钱。正确的平衡取决于许多因素(例如,编写测试的坏程序员比不编写测试的好程序员更糟糕),并且通常是主观的。

我说这些是因为你的问题的具体解决方案(采取正确的方法)在很大程度上取决于这种主观平衡。

在您的情况下,最好的方法是解耦后端(例如使用一些像Spring Boot这样的ORM),并创建一个Derby或类似的本地模式,用import.sql填充数据,仅用于测试,它可以在您的CI/CD服务器上运行而不会出现问题。

问题太长,不能写在这里,但这里有两个主要的问题要用:

  • Spring Boot - Loading Initial Data
  • 覆盖默认的Spring-Boot应用。Junit Test
  • 中的属性设置

相关内容

  • 没有找到相关文章

最新更新