Testing JDBC Code
Problem
You want to use mock objects to test JDBC code.
Solution
Use mock implementations of JDBC interfaces like
Connection, PreparedStatement,
and ResultSet.
Discussion
Although you could create your own implementations of the JDBC
interfaces, the Mock Objects framework
from
http://www.mockobjects.com makes your work
easier. This framework provides mock implementations of the key JDBC
interfaces so you don’t have to manually stub out
every method of interfaces like
java.sql.ResultSet. Your tests extend from and use
these mock implementations.
Warning
These examples work with Version 0.4rc1 of the Mock Objects framework. You will almost certainly have to alter the code when newer versions of Mock Objects are available.
Example 6-9 shows a test for the
getAccount( ) method shown in the previous recipe.
Example 6-9. Testing the getAccount( ) method
public void testGetAccount( ) throws Exception { class MyMockResultSet extends MockResultSetJdk14 { public Object getObject(int columnIndex) throws SQLException { return null; } public Object getObject(String columnName) throws SQLException { if ("acctType".equals(columnName)) { return "CH"; } if ("balance".equals(columnName)) { return new Double(100.0); } return null; } public boolean next( ) throws SQLException { super.myNextCalls.inc( ); return true; } public int getRow( ) throws SQLException { return 1; } } MockResultSet mockRs = new MyMockResultSet( ); mockRs.setExpectedCloseCalls(1); mockRs.setExpectedNextCalls(1); MockPreparedStatement ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access