¿La mejor manera de probar herramientas de línea de comando?

votos
13

Tengo una gran colección de utilidades de línea de comandos que nos escribimos y usamos con frecuencia. Por el momento, probarlos es muy engorroso y, en consecuencia, no hacemos tantas pruebas como lo deseamos.

Me pregunto si alguien puede sugerir buenas técnicas o herramientas para hacer un buen trabajo de este tipo.

Editar: para aclarar esto, es UNIX

Gracias por adelantado. Tom

Publicado el 09/12/2008 a las 16:46
fuente por usuario
En otros idiomas...                            


8 respuestas

votos
4

Usando Cram se puede escribir pruebas que se asemejan a una sesión de consola interactiva. Cram será luego reproducir los comandos de la prueba, comparar la salida con la referencia, e informar de las diferencias. Formato de las pruebas es bastante flexible y permite hacer coincidir la salida usando expresiones regulares Perl o comodines en forma de concha.

Respondida el 02/07/2015 a las 19:34
fuente por usuario

votos
4

Aruba es un pepino de extensión para probar aplicaciones de línea de comandos escritos en cualquier lenguaje de programación.

Para usarlo, necesitará rubí para ejecutar las pruebas, pero el propósito de Aruba es proporcionar una biblioteca de definiciones predefinidas paso para que usted no tendrá que escribir ningún código de rubí para hacer viable un conjunto de pruebas. (Aunque en algún momento es probable que desee escribir un poco de rubí para hacer unos pasos personalizados.)

Se puede ver un ejemplo sofisticado de una herramienta de línea de comandos probado con Aruba aquí: jingweno / gh

Respondida el 28/02/2014 a las 05:56
fuente por usuario

votos
4

Recomiendo estructurar el código de la herramienta de línea de comandos para que la utilidad de línea de comandos sea un cliente de una biblioteca de funciones y / o clases.

En lugar de simplemente usar std :: cout para imprimir el resultado, haga que la función de bibliotecas tome una referencia ostream que por defecto es std :: cout. Cuando esté probando, proporcione un std :: stringstream para recopilar el resultado.

Finalmente, simplemente compare el resultado de su utilidad con los resultados esperados usando su marco de prueba de unidad favorito.

(Me disculpo por el ejemplo específico de C ++ ... estoy seguro de que también hay maneras de hacer cosas similares en otros idiomas).

Respondida el 10/12/2008 a las 03:36
fuente por usuario

votos
3

Debería poder llamarlos desde un script de shell (archivo por lotes, en sistemas operativos MS), redirigir el resultado a un archivo, luego escanear el archivo mediante programación para asegurarse de que tiene el resultado correcto. No conozco un marco de prueba que lo automatice, pero debería ser bastante sencillo configurarlo usted mismo.

Respondida el 09/12/2008 a las 16:52
fuente por usuario

votos
2

Hice un poco de esto (hace mucho tiempo, jeje) usando Esperar para verificar que lo que sucedió fue lo que yo, umm, esperaba

Respondida el 09/12/2008 a las 17:02
fuente por usuario

votos
1

Murciélagos (Sistema de prueba automatizada Bash) por Sam Stephenson. Es pequeño, escrito puramente en la cáscara y tiene un buen conjunto de características.

Sugerido anteriormente Aruba parece interesante, pero en algunos casos podría ser una exageración tranquila en términos de dependencias (el rubí, pepino)

Respondida el 17/04/2016 a las 07:44
fuente por usuario

votos
0

Se podría utilizar Perl con Test :: más biblioteca, que ofrece un gran marco para probar las CLI. Aunque está diseñado principalmente para las pruebas unitarias, se podría extender para comprobar los flujos de trabajo de los usuarios.

Algunos de los 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);

Respondida el 15/01/2015 a las 19:19
fuente por usuario

votos
0

Puede hacerlo desde un archivo de proceso por lotes o un servidor de secuencias de comandos de Windows.

Pero prometo usar un programador de tareas como ( http://www.splinterware.com/products/wincron.htm ) u otro software gratuito / profesional.

Allí puede copiar / pegar fácilmente los parámetros de la línea de comando, que debe variar, cuando quiere probar su software unas 100 veces.

Respondida el 09/12/2008 a las 16:54
fuente por usuario

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