2009-04-13 17 views
5

¿Alguien ha visto, intentado implementar o jugado con TAP en shell? Estamos buscando crear pruebas unitarias en varios idiomas (no me explique por qué esto no existe hasta el momento), y dado que tenemos tanto código Perl, vamos a ver TAP (entre otros, imagina). Encontré una biblioteca TAP para C, Perl, por supuesto, tiene incorporado, e incluso encontré una API para Java. Pero falta un área en las pruebas de script de shell.Probar cualquier cosa en los scripts de Shell

No es que haya encontrado mucho en los guiones de shell de pruebas unitarias, tampoco, pero dado que tenemos miles de líneas de código de shell, sería bueno poder probarlo de alguna manera.

Respuesta

9

Consulte la lista de TAP Producers para obtener una lista de bibliotecas. En esa lista encontrará Tap-functions para el código de shell.

+1

Esperaba algo que funcionaba en Bourne Shell, no solo en Bourne Again Shell, ¡pero es mejor que nada! – Tanktalus

+1

Ambos enlaces rotos. – Lukas

3

Normalmente escribo mi propio marco de prueba pequeño para mis scripts de shell. Algunas cosas a tener en cuenta al hacer esto:

  • Cuando trabaje con archivos, realice todas las rutas relativas a alguna variable que pueda modificar en sus pruebas.
  • diff(1) es grande para verificar los resultados de prueba (y para mostrar un mensaje de error útil para el usuario)
  • Usar variables locales ampliamente
  • todo debe estar en una función

Dicho esto, mi "prueba framework "es principalmente un conjunto de funciones de shell (llamadas test*) y una función runTests que las llama una a una. Nada lujoso, realmente. Las pruebas crean un directorio de trabajo para la prueba, copian todos los archivos necesarios, ejecutan una función, verifican los resultados contra un conjunto de archivos que les resulta útil.

3
  • Bats es simple Bash only test framwork, las pruebas se pueden escribir en una sintaxis muy clara.
  • shUnit es el marco de prueba de shell más antiguo, con poca documentación.
  • shUnit2 es un proyecto más reciente inspirado en shUnit, pero completamente diferente. Las pruebas podrían escribirse de una manera más xUnit. Lo más importante, es compatible con POSIX.
Cuestiones relacionadas