### Question:
DataxTask extends AbstractTask { private String buildShellCommandFile(String jobConfigFilePath, Map<String, Property> paramsMap) throws Exception { String fileName = String.format("%s/%s_node.%s", taskExecutionContext.getExecutePath(), taskExecutionContext.getTaskAppId(), OSUtils.isWindows() ? "bat" : "sh"); Path path = new File(fileName).toPath(); if (Files.exists(path)) { return fileName; } StringBuilder sbr = new StringBuilder(); sbr.append(DATAX_PYTHON); sbr.append(" "); sbr.append(DATAX_HOME_EVN); sbr.append(" "); sbr.append(jobConfigFilePath); String dataxCommand = ParameterUtils.convertParameterPlaceholders(sbr.toString(), ParamUtils.convert(paramsMap)); logger.debug("raw script : {}", dataxCommand); Set<PosixFilePermission> perms = PosixFilePermissions.fromString(Constants.RWXR_XR_X); FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms); if (OSUtils.isWindows()) { Files.createFile(path); } else { Files.createFile(path, attr); } Files.write(path, dataxCommand.getBytes(), StandardOpenOption.APPEND); return fileName; } DataxTask(TaskExecutionContext taskExecutionContext, Logger logger); @Override void init(); @Override void handle(); @Override void cancelApplication(boolean cancelApplication); String[] tryExecuteSqlResolveColumnNames(BaseDataSource baseDataSource, String sql); @Override AbstractParameters getParameters();  }### Answer:
@Test public void testBuildShellCommandFile() throws Exception { try { Method method = DataxTask.class.getDeclaredMethod("buildShellCommandFile", String.class); method.setAccessible(true); Assert.assertNotNull(method.invoke(dataxTask, "test.json")); } catch (Exception e) { Assert.fail(e.getMessage()); } }