UsageSanityChecker { protected boolean checkItemCountByPstmt() throws SQLException { boolean checkOk = true; for(CheckCase check : checkCases) { checkOk &= checkItemCountByPstmt(check); } return checkOk; }  String runSanityCheck(); static void main(String args[]);  }
@Test public void testCheckItemCountByPstmt() throws SQLException { String sqlTemplate1 = "SELECT * FROM mytable1"; String sqlTemplate2 = "SELECT * FROM mytable2"; Connection conn = Mockito.mock(Connection.class); PreparedStatement pstmt = Mockito.mock(PreparedStatement.class); ResultSet rs = Mockito.mock(ResultSet.class); Mockito.when(conn.prepareStatement(sqlTemplate1)).thenReturn(pstmt); Mockito.when(conn.prepareStatement(sqlTemplate2)).thenReturn(pstmt); Mockito.when(pstmt.executeQuery()).thenReturn(rs, rs); Mockito.when(rs.next()).thenReturn(true, true); Mockito.when(rs.getInt(1)).thenReturn(8, 8, 16, 16); UsageSanityChecker checker = new UsageSanityChecker(); checker.conn = conn; checker.reset(); checker.addCheckCase(sqlTemplate1, "item1"); checker.addCheckCase(sqlTemplate2, "item2"); checker.checkItemCountByPstmt(); Pattern pattern = Pattern.compile(".*8.*item1.*\n.*16.*item2.*"); Matcher matcher = pattern.matcher(checker.errors); assertTrue("Didn't create complete errors. It should create 2 errors: 8 item1 and 16 item2", matcher.find()); }