2009-03-26 20 views
7

Cuando quiero ejecutar todas mis pruebas unitarias, ejecuto pruebas de rake: unidades. Para ejecutar todas mis pruebas funcionales, ejecuto la prueba de rake: funcionales. Si quiero correr todos los casos de prueba en un solo archivo, corroRuby on Rails: Running Tests

prueba de rubí/unidad/username_test.rb

Algunas personas me han estado diciendo que debería funcionar en lugar rastrillo como

rastrillo test: units TEST = test/unit/username_test.rb

Para ejecutar pruebas, dicen que siempre debo ejecutar el rake. Sé que debería ejecutar Rake si estoy probando todas mis pruebas unitarias. Pero, ¿qué sucede si solo hay un archivo o un método de prueba en particular en un archivo que estoy probando? ¿Debo seguir usando rake? ¿Hay alguna diferencia entre los dos? ¿Obtengo algún beneficio de ejecutar rake sobre ruby? ¿Hay alguna desventaja para ejecutar Ruby en lugar de Rake?

Respuesta

2

No, no lo creo. El rastrillo parece ser una forma conveniente de ejecutar todas las pruebas, todas las pruebas unitarias o todas las pruebas funcionales/de controlador. Para un solo archivo, utilizo el enfoque ruby object_test.rb ... más corto y funciona bien para mi proyecto de casa de rieles.

6

Lamentablemente, los dos no son lo mismo. Ejecutar las pruebas bajo rake puede terminar tirando cosas de lugares diferentes que cuando ejecuta la prueba directamente (más un problema cuando tiene múltiples versiones de gemas, etc. en su sistema).

La intención es que las pruebas que se ejecutan bajo rake se realicen en un entorno que coincida con lo que producirían los rieles; No puedo dar fe de cuán cerca coinciden, pero he visto que eso pasó cuando se ejecutó directamente pero falló cuando se ejecutó a través de rake o rails (y viceversa).

+0

indica una configuración de prueba deficiente, y generalmente es causada por un método que ejecuta pruebas en un orden diferente al otro; uno de ellos hace que las pruebas fallen. Probablemente porque no está usando transacciones y las pruebas no se están limpiando por sí mismas o no requieren los accesorios que usan. –

3

Antes de registrarme por lo menos recomendaría ejecutar rake para golpear todo, con el fin de estar seguro de que nada inesperado se ha roto.

Ruby simple parece ideal para la prueba rápida de archivos individuales durante las iteraciones.

Tenga en cuenta que ejecutar todo a través de rake puede producir resultados diferentes a ejecutar todo individualmente, como me pareció recientemente: estaba haciendo algo incorrecto en una prueba que funcionó con éxito de forma aislada, pero eso dejó un problema por ahí. una prueba posterior que solo apareció cuando utilicé el rastrillo.

-1

Deben ser idénticos. si no lo son, definitivamente estás haciendo algo mal.

Como dije en mis otros comentarios, si obtiene pruebas que pasan en una, pero fallan en la otra, está haciendo algo muy incorrecto; esto indica una configuración de prueba deficiente, y generalmente es causada por un orden de ejecución de prueba diferente entre los dos enfoques de prueba; uno de ellos hace que las pruebas fallen.

Por lo general, la causa de esto es que no está utilizando transacciones y/o las pruebas no están limpiando después de ellas. Por ejemplo, no requiere adecuadamente los dispositivos que luego verifican y, en cambio, depende del estado de la base de datos preexistente.

usted es libre de utilizar cualquier método. si algo se rompe, estás haciendo algo mal en tus pruebas, y deberías arreglar tu código.

0

Los dos no son lo mismo. Rake hará una carga de prueba preliminar.

La intención es que las pruebas que se ejecutan bajo rake se realicen en un entorno que coincida con lo que producirían los rieles;

Una diferencia que he notado es con el rastrillo que ocurre con la carga del accesorio que podría pasarse por alto con ruby.

Recomiendo usar rastrillo, a menos que esté usando la línea de comando ruby ​​en una sola prueba en el archivo con la opción -n.