Melhor maneira de testar ferramentas de linha de comando?

votos
13

Eu tenho uma grande coleção de utilitários de linha de comando que são nós escrevemos nós mesmos e usar com freqüência. No momento testá-las é muito pesado e, consequentemente, não fazemos tanta teste como algo a.

Eu estou querendo saber se alguém pode sugerir boas técnicas ou ferramentas para fazer um bom trabalho de esse tipo de coisa.

Editar: para esclarecer este é UNIX

Desde já, obrigado. Tom

Publicado 09/12/2008 em 16:46
fonte usuário
Em outras línguas...                            


8 respostas

votos
4

Usando Cram você pode escrever testes que se assemelham a uma sessão de shell interativo. Cram irá então reproduzir comandos a partir do teste, compara a saída para a referência, e relatar diferenças. Formato de testes é bastante flexível e permite que você para combinar a saída usando Perl regex ou curingas shell-like.

Respondeu 02/07/2015 em 19:34
fonte usuário

votos
4

Aruba é um pepino extensão para testar aplicações de linha de comando escritos em qualquer linguagem de programação.

Para usá-lo, você vai precisar de rubi para executar os testes, mas o propósito de Aruba é fornecer uma biblioteca de definições pré-definidas passo para que você não precisará escrever qualquer código Ruby para fazer um conjunto de testes viável. (Embora em algum momento você provavelmente vai querer escrever um pouco de Ruby para fazer alguns passos personalizados.)

Você pode ver um exemplo sofisticado de uma ferramenta de linha de comando testados com aruba aqui: jingweno / gh

Respondeu 28/02/2014 em 05:56
fonte usuário

votos
4

Eu recomendo estruturar o código da sua ferramenta de linha de comando para que o utilitário de linha de comando é um cliente para uma biblioteca de funções e / ou classes.

Ao invés de simplesmente usando std :: cout para imprimir saída, tem a função de bibliotecas tomar uma referência ostream que o padrão é std :: cout. Quando você está testando, fornecer uma std :: stringstream para coletar a saída.

Finalmente, basta comparar a saída do seu utilitário com os resultados esperados usando o seu quadro favorito de testes de unidade.

(Peço desculpas por exemplo específico do C ++ ... Eu tenho certeza que existem maneiras de fazer coisas semelhantes em outros idiomas também).

Respondeu 10/12/2008 em 03:36
fonte usuário

votos
3

Você deve ser capaz de chamá-los a partir de um script shell (arquivo de lote, em sistemas operacionais MS), redirecionar a saída para um arquivo, em seguida, digitalizar o arquivo por meio de programação para garantir que ele tem a saída correta. Eu não estou ciente de um framework de testes que automatiza isso para você, mas deve ser bastante simples para configurá-lo sozinho.

Respondeu 09/12/2008 em 16:52
fonte usuário

votos
2

Eu fiz um pouco disso (um tempo loooong atrás hehe) usando Esperar para verificar que o que aconteceu foi que eu, umm, esperado

Respondeu 09/12/2008 em 17:02
fonte usuário

votos
1

Morcegos (Bash Testing System Automated) por Sam Stephenson. É minúsculo, escrito puramente em shell e tem um bom conjunto de funcionalidades.

Anteriormente sugeriu Aruba parece interessante, mas em alguns casos pode ser tranquila um exagero em termos de dependências (rubi, pepino)

Respondeu 17/04/2016 em 10:44
fonte usuário

votos
0

Você poderia usar perl com Test :: mais biblioteca, que oferece uma excelente estrutura para testar CLIs. Embora projetado principalmente para testes de unidade, você pode estendê-lo para testar fluxos de trabalho do usuário.

Alguns dos métodos:

 # Various ways to say "ok"
  ok($got eq $expected, $test_name);
  is  ($got, $expected, $test_name);
  isnt($got, $expected, $test_name);

  # Rather than print STDERR "# here's what went wrong\n"
  diag("here's what went wrong");

  like  ($got, qr/expected/, $test_name);
  unlike($got, qr/expected/, $test_name);

  cmp_ok($got, '==', $expected, $test_name);

Respondeu 15/01/2015 em 19:19
fonte usuário

votos
0

Você pode fazer isso a partir de um arquivo de lote host Windows oder scripting.

Mas eu prometo usar um agendador de tarefas como ( http://www.splinterware.com/products/wincron.htm software) ou outro livre / profissional.

Lá você pode copiar facilmente / colar linha de comando-parâmetros que você deve variar em diante, quando você quer testar o seu software por cerca de muitas 100 vezes ?!

Respondeu 09/12/2008 em 16:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more