【发布时间】:2020-10-26 10:59:05
【问题描述】:
我在一个类中有这样的方法代码
public List<Auth_token> getAuthToken(String User) throws SQLException {
List<Auth_token> usersList = new ArrayList<Auth_token>();
Connection connection = null;
PreparedStatement ps = null;
ResultSet rset = null;
try {
OracleDataSource dataSource = new OracleDataSource();
dataSource.setURL("blah blah");
dataSource.setUser("blah");
//LOGGER.log(Level.INFO,"username +: "+config.getUsername());
dataSource.setPassword("blah");
Connection conn = dataSource.getConnection();
String query = "blah query";
//more code
}
我只需要使用 mockito 来模拟 oracle 数据源。我知道如何使用 power mockito,但我只能使用 mockito 来做到这一点。请帮帮我。
【问题讨论】:
-
您需要更改您的实现,以便注入 OracleDataSource 实例或创建它的工厂。
-
我无法更改实现,因为该代码是由其他人编写的。我只需要提高代码覆盖率。
-
使用 mockito,您无需更改编写的代码。相反,您模拟代码将响应的内容(无需访问数据库)。例如,在您省略的代码中,您是否返回了一个 select 语句?也许您可以用一系列行来模拟 select 语句并避免数据库调用。
-
你不能模拟这个,这是一个设计实现缺陷,你试图在每次调用方法时获取连接,实现本身是错误的,很难编写单元测试证明了这一点。跨度>
标签: java testing mocking mockito