### Question:
SQLiteDatabaseHelper { public void dropColumn(String createTableCmd, String tableName, String... colsToRemove) throws java.sql.SQLException { database.beginTransaction(); try { List<String> updatedTableColumns = getTableColumns(tableName); updatedTableColumns.removeAll(Arrays.asList(colsToRemove)); String columnsSeparated = Joiner.on(",").join(updatedTableColumns); database.execSQL("ALTER TABLE " + tableName + " RENAME TO " + tableName + "_old;"); database.execSQL(createTableCmd); database.execSQL("INSERT INTO " + tableName + "(" + columnsSeparated + ") SELECT " + columnsSeparated + " FROM " + tableName + "_old;"); database.execSQL("DROP TABLE " + tableName + "_old;"); database.setTransactionSuccessful(); } finally { database.endTransaction(); } } SQLiteDatabaseHelper(Database database); void dropColumn(String createTableCmd,
                            String tableName,
                            String... colsToRemove); List<String> getTableColumns(String tableName);  }### Answer:
@Test public void testDropColumn() throws SQLException { helper.dropColumn(createTestTable, testTable, "Col2"); List<String> cols = helper.getTableColumns("TestTable"); assertThat(cols, containsIgnoringCase("Col1", "Col3")); Cursor c = getDatabase().query("TestTable", null, null); assertContainsData(c, Lists.newArrayList(Long.valueOf(1), "thing1")); }