Tempo de leitura: menos de 1 minuto
Semana passada, implementado um cenário de teste, tive a necessidade de executar um comando shell. Vou explicar melhor.
O cenário de teste que estava implementado, tinha a necessidade do banco de dados da aplicação estivesse atualizado.
Build do nosso projeto é baseado em Gradle (O Gradle é um sistema avançado de automatização de builds que une o melhor da flexibilidade do Ant com o gerenciamento de dependências e as convenções do Maven), sendo assim, existe uma task gradle para atualizar a banco de dados, então porque recriar no meu teste? Basta apenas executar a task e pronto!
Foi aí que me perguntei, como posso executar um comando shell dentro da minha classe Java?
Fui até o Google pesquisar e encontrei a seguinte solução:
[code language=”java”]
private String executeCommand(String command) {
StringBuffer output = new StringBuffer();
Process p;
try {
p = Runtime.getRuntime().exec(command);
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return output.toString();
}
[/code]
Copiei o método para o meu teste e chamei o método executeCommand passando o comando shell que desejava executar:
[code language=”java”]
//chamando a task atualizaDb
executeCommand("gradle atualizaDb");
[/code]
Legal né! Faça o teste, acho que funciona com qualquer comando, testei o ping, ls e grep e funcionou sem problemas.
Fonte: How to execute shell command from Java
Abraços.