Pregunta

Una de dos parter con una rápida introducción.Intro:Yo estoy llegando a Ruby desde Perl, y estoy un poco perdido entre el marco de pruebas de decisiones.Entiendo que probablemente no hay un solo, todo alrededor de la mejor elección, pero ni siquiera puedo obtener una imagen clara del campo de juego.

Así, en primer lugar, MiniTest o Test::Unit?Me acabo de dar cuenta que 1.9.1 valores predeterminados para MiniTest ahora.No me había dado cuenta desde todos los mayores de Test::Unit tutoriales todavía funciona bien.Si require test/unit, usted consigue realmente MiniTest como un Test::Unit emulador (!).Mi idea inicial era ir con la opción predeterminada de MiniTest (una vez que supe que estaba allí), pero aún muy reciente libros no parecen estar interesados en la enseñanza de la misma. Ruby Mejores Prácticas dice que "Hay diferencias significativas" entre los dos, pero él decide no tratar con ellos.También dirige todos sus exámenes a través de Test::Unit (además de algunos complementos personalizados).El nuevo Pico también tiene muy poco acerca de MiniTest de por sí, y en el capítulo de pruebas también el uso de la Prueba: Unidad de emulación de la versión de MiniTest.Para aclarar mi primera pregunta, entonces:es MiniTest una mala primera opción?Debo valor predeterminado mediante el Test::Unit emulador?

Segundo, más allá de las opciones, hay Rspec, Pepino y de la empresa para el comportamiento impulsado pruebas.Es la comunidad la inclinación fuertemente hacia este estilo y este marco?Debo comenzar sólo con Rspec?

Voy a jugar un poco con las tres, pero tengo la curiosidad de saber qué tipo de consenso (si alguno) se está formando en torno a las pruebas en Ruby 1.9.

(Un rápido seguimiento, como un recordatorio para mí y para cualquier persona interesada.Ver en este enlace para una útil visión general de las diferentes invocaciones para Test::Unit y MiniTest en los diversos Rubíes 1.8 a 1.9.1.)

¿Fue útil?

Solución

Hay consenso?Yo diría que no.Hay una fuerte voz de la comunidad para el uso de TDD/BDD, pero incluso entonces no es universal.El marco es probablemente menos importante que la aplicación de la práctica en el primer lugar.

Creo que minitest es el 1.9 de reemplazo para el Test::Unit, que sólo existe como una envoltura alrededor de la nueva biblioteca de compatibilidad con versiones anteriores.Me imagino que el de tomar el minitest específicos de la ruta sería más hacia el futuro.

RSpec es un poco diferente:menos obviamente, infundida por el "tradicional" xUnit de influencia de los marcos.Vale la pena pasar algún tiempo para ver si lo prefiere.

También hay Shoulda.aunque no sé cómo la prueba es de 1.9:es más de un contenedor/extensión para el Test::Unit, por lo que es probable que funcione, sin embargo.

Por supuesto, la diversión no se detiene allí:una vez que hayas elegido un marco de prueba de que usted va a querer un burlándose de motor de algún tipo.O de datos accesorio de reemplazo.

En todos los casos, yo diría que cualquier marco para que usted puede encontrar la evidencia de actualizaciones regulares, abierto, poblada de la comunidad y una API que no odio va a hacer el trabajo.Es poco probable que usted va a ser derribado después de haber hecho cualquiera sea la opción que hacer.

Otros consejos

He estado usando Rspec para un año o así.Me cambié de Test::Unit en concreto porque yo podría imprimir en una forma legible por humanos lo que se está probando.

Se lee como la prosa.Que es gran ventaja para mí.Pero como con todo lo que los resultados pueden variar.

describe Model do
  it "should do what I want" do
    this.should == that
    it.should be_nil
    that.should_not be_true
  end
end 

También reguardless de en el marco de prueba usted debe pensar también en una herramienta de cobertura como RCov.Se integra con rspec y le dirá donde el código carece de pruebas.

RSpec es el consenso de los populares Rieles de libros como "The Rails Way".Pros mi humilde opinión, son las pruebas que se lee como en inglés, los formatos de salida que se lee como en inglés, y sobre la marcha los dispositivos de comparación.Los contras son de baja velocidad y de la biblioteca a veces se siente "mágico", es decir,demasiado extraña a los codificadores que están más familiarizados con Ruby y pruebas unitarias.RSpec también ofrece Pepino y Pepinillo, que son formas de escribir los usuarios de historias que son útiles aceptación del cliente.

MiniTest está integrado en Ruby 1.9.Pros mi humilde opinión son de velocidad rápida, muy fácil de leer/escribir para los codificadores de otros idiomas, y las pruebas que uso mucho el mismo estilo de código tendría que utilizar en el código.MiniTest tiene mucho más que la mayoría de la gente sabe, por ejemplo MiniTest Spec ha BDD los dispositivos de comparación similar a la de RSpec, MiniTest Simulacro es una burla del sistema, y MiniTest punto de Referencia es para la creación de perfiles de rendimiento.

En mi experiencia personal, las personas que construir Rieles de aplicaciones tienden hacia RSpec, y las personas que construir puro código Ruby tienden hacia MiniTest Unidad, Especificaciones, Simulacros, punto de Referencia, y así sucesivamente.

Personalmente me gusta rspec.He encontrado que el enfoque mis pruebas sobre el comportamiento que realmente me ayudó a conseguir todo lo que yo estaba tratando de hacer.

Con rspec ir y obtener algo parecido a una Fábrica de Niña o de Maquinista para generar datos de prueba, no utilizar accesorios.

Con respecto a lo que dijo Mike, rspec proyecto es bastante activa con las nuevas versiones se liberan normalmente con cada versión de rails para ayudar a mantener el desarrollo del marco de trabajo.

RSpec es bonito, pero creo que recientemente ha habido un montón de hablar y el movimiento detrás de Minitest el que viene con Ruby 1.9.x.Tiene un montón de las sutilezas de los RSpec, pero es mucho más escueta y concisa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top