### Question:
UpdateExecutor extends AbstractDMLBaseExecutor<T, S> { @Override protected TableRecords beforeImage() throws SQLException { ArrayList<List<Object>> paramAppenderList = new ArrayList<>(); TableMeta tmeta = getTableMeta(); String selectSQL = buildBeforeImageSQL(tmeta, paramAppenderList); return buildTableRecords(tmeta, selectSQL, paramAppenderList); } UpdateExecutor(StatementProxy<S> statementProxy, StatementCallback<T, S> statementCallback,
                          SQLRecognizer sqlRecognizer);   }### Answer:
@Test public void testBeforeImage() throws SQLException { Assertions.assertNotNull(updateExecutor.beforeImage()); String sql = "update table_update_executor_test set name = 'WILL' where id = 1"; List<SQLStatement> asts = SQLUtils.parseStatements(sql, JdbcConstants.MYSQL); MySQLUpdateRecognizer recognizer = new MySQLUpdateRecognizer(sql, asts.get(0)); updateExecutor = new UpdateExecutor(statementProxy, (statement, args) -> null, recognizer); Assertions.assertNotNull(updateExecutor.beforeImage()); }