### Question:
SqlFileScriptQuery extends AbstractQuery implements ScriptQuery { public Supplier<Reader> getReaderSupplier() { if (sqlAnnotation == null) { return () -> { try { InputStream inputStream = scriptFileUrl.openStream(); return new InputStreamReader(inputStream, Constants.UTF_8); } catch (IOException e) { throw new UncheckedIOException(e); } }; } return () -> new StringReader(sqlAnnotation.value()); }  void setScriptFilePath(String scriptFilePath); void setBlockDelimiter(String blockDelimiter); void setHaltOnError(boolean haltOnError); void setSqlLogType(SqlLogType sqlLogType); @Override void prepare(); @Override void complete(); @Override int getQueryTimeout(); @Override Sql<?> getSql(); @Override String getScriptFilePath(); @Override URL getScriptFileUrl(); Supplier<Reader> getReaderSupplier(); @Override String getBlockDelimiter(); @Override boolean getHaltOnError(); SqlLogType getSqlLogType();  }### Answer:
@Sql("drop table employee;\ndrop table department;") @Test public void testGetReaderSupplier() throws Exception { SqlFileScriptQuery query = new SqlFileScriptQuery(); query.setConfig(config); query.setMethod(method); query.setCallerClassName("aaa"); query.setCallerMethodName("bbb"); query.setScriptFilePath(String.format("%s#%s", getClass().getName(), method.getName())); query.setBlockDelimiter("ddd"); query.prepare(); Supplier<Reader> supplier = query.getReaderSupplier(); try (BufferedReader reader = new BufferedReader(supplier.get())) { assertEquals("drop table employee;", reader.readLine()); assertEquals("drop table department;", reader.readLine()); assertNull(reader.readLine()); } }