@Test
public void shouldRollbackCommitAndCloseConnectionIfExceptionIsThrownInExecute() throws Exception {

    final JDBCBase.ConnectionBlock mockConnectionBlock = mock(JDBCBase.ConnectionBlock.class);
    doThrow(IllegalArgumentException.class).when(mockConnectionBlock).use(mockConnection);
    initializeJDBCTestSubclass();
    assertThatExceptionIsThrown(new Callable<Void>() {
        @Override
        public Void call() throws Exception {
            jdbcTestSubclass.execute(mockConnectionBlock);
            return null;
        }
    }, IllegalArgumentException.class);
    InOrder inOrder = inOrder(mockConnection);
    inOrder.verify(mockConnection).rollback();
    inOrder.verify(mockConnection).close();
}