gpt4 book ai didi

junit - 如何使用 mockito 测试数据库连接

转载 作者:行者123 更新时间:2023-12-04 16:19:15 32 4
gpt4 key购买 nike

我正在使用 Junit测试我的 Jersey API。我想在没有数据库的情况下测试 DAO。我尝试使用 Mockito 但仍然无法使用模拟对象来测试包含对 DB 的 Hibernate 调用的 DAO。我想写Junit对于我调用 DAO 的 Helper 类。任何人都可以提供带有一些示例代码的解决方案来模拟 DAO 中的数据库连接。

编辑 :

状态.java

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getDBValue() throws SQLException {
DatabaseConnectionDAO dbConnectiondao = new DatabaseConnectionDAO();
String dbValue = dbConnectiondao.dbConnection();
return dbValue;
}

数据库连接DAO.java
private Connection con;
private Statement stmt;
private ResultSet rs;
private String username;

public String dbConnection() throws SQLException{
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test", "root", "root");
stmt = con.createStatement();
rs =stmt.executeQuery("select * from test");

while(rs.next()){
username = rs.getString(1);
}
}catch(Exception e){
e.printStackTrace();
}finally{
con.close();
}
return username;
}

TestDatabase.java
@Test
public void testMockDB() throws SQLException{
DatabaseConnectionDAO mockdbDAO = mock(DatabaseConnectionDAO.class);
Connection con = mock(Connection.class);
Statement stmt = mock(Statement.class);
ResultSet rs = mock(ResultSet.class);

Client client = Client.create();
WebResource webResource = client.resource("myurl");
ClientResponse response = webResource.accept(MediaType.TEXT_PLAIN).get(ClientResponse.class);

verify(mockdbDAO).dbConnection();

//when(rs.next()).thenReturn(true);
when(rs.getString(1)).thenReturn(value);

actualResult = response.getEntity(String.class);
assertEquals(expectedResult,actualResult );
}

最佳答案

简短回答 不要 !

需要进行单元测试的代码是 DAO 的客户端,因此需要模拟的是 DAO。 DAO 是将应用程序与外部系统(此处为数据库)集成的组件,因此必须将它们作为集成测试(即使用真实数据库)进行测试。

关于junit - 如何使用 mockito 测试数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590896/

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