@Test
public void launchRollbacksIfSQLException() throws SQLException {

    Destination destination = mock(Destination.class);
    Connection connection = mock(Connection.class);
    when(destination.getConnection()).thenReturn(connection);
    Operation operation = mock(Operation.class);
    doThrow(new SQLException()).when(operation).execute(connection, DefaultBinderConfiguration.INSTANCE);
    DbSetup setup = new DbSetup(destination, operation);
    try {
        setup.launch();
        fail("Expected a DbSetupRuntimeException");
    }
    catch (DbSetupRuntimeException e) {
        // expected
    }
    InOrder inOrder = inOrder(destination, connection, operation);
    inOrder.verify(destination).getConnection();
    inOrder.verify(operation).execute(connection, DefaultBinderConfiguration.INSTANCE);
    inOrder.verify(connection).rollback();
}