Acabo de ver un Railscast para Minitest.Minitest y Rspec
¿Cuáles son los pros y los contras del uso de RSpec frente a Minitest para probar una aplicación de rieles? ¿Qué características perderé al convertir de RSpec a Minitest?
Acabo de ver un Railscast para Minitest.Minitest y Rspec
¿Cuáles son los pros y los contras del uso de RSpec frente a Minitest para probar una aplicación de rieles? ¿Qué características perderé al convertir de RSpec a Minitest?
Soy uno de los desarrolladores de RSpec, y nunca he usado minitest, así que tenga en cuenta mis sesgos al leer esta respuesta.
En general, la potencia de RSpec proviene del hecho de que reifica tantos conceptos de prueba en objetos de primera clase. Donde Test :: Unit y Minitest usan métodos simples para realizar afirmaciones, RSpec usa objetos de comparación de primera clase que admiten negación, autodescripción y más. Los ejemplos de RSpec son objetos de primera clase que admiten metadatos enriquecidos; compilaciones minitest/spec it
bloquea en métodos simples, que no admiten el mismo tipo de metadatos ricos. RSpec admite la especificación de comportamientos compartidos utilizando una construcción de primera clase (grupos de ejemplos compartidos) que acepta argumentos; w/minitest puede usar inheritance or a mixin to re-use tests, pero no tiene el mismo tipo de soporte de primera clase. RSpec tiene una API de formateador explícita (y hay muchos formateadores de terceros que la usan); No estoy al tanto de que minitest tenga el mismo tipo de API de formateador de primera clase.
Como alguien que está constantemente haciendo pruebas y practicando TDD todo el día, encuentro la potencia que RSpec me da para ser muy útil. Sin embargo, a mucha gente le parece excesivo y existe un costo cognitivo adicional para las abstracciones adicionales.
Estas son algunas de las características específicas RSpec tiene que creo que le falta minitest:
before(:all)
ganchos (tenga en cuenta que esto es una característica de usuario poder de RSpec que debe ser utilizado raramente, yo sólo he utilizado en algunos ocasiones en muchos años de uso de RSpec)around(:each)
ganchosBeneficios del uso de Minitest:
def test_blah
o it 'blah'
.En general, es un poco como Sinatra vs. Rails, y creo que Minitest y RSpec son buenas opciones según sus necesidades.
Una última cosa: si hay aspectos específicos de Minitest que te gustan más, pero otras cosas que te gustan más de RSpec, pueden combinarse y combinarse fácilmente. I wrote a blog post about this, si está interesado.
Gracias por la increíble explicación. –
Tenga en cuenta que si Boris desea integrar MiniTest con Spork, Guard, Capybara y cualquier tipo de controlador de Javascript, puede planear pasar una semana entera tratando de resolverlo y hacerlo estable. MiniTest no está listo para el horario estelar cuando se trata de tener una pila de pruebas completa para cualquier cosa que no sea la más rudimentaria de las aplicaciones de Rails. Le di el viejo examen de la universidad, pero terminó en frustración. – AKWF
He convertido al Minitest de especificaciones de Test/Unit
con shoulda
, y vale la pena. Se acaba con la repetición y dicen que también mejora la velocidad. Realmente nunca utilicé RSpec. En cambio, escribí mi propio marco de pruebas y burlas primitivas (solo con el propósito de entender la burla, la abandoné al cambiarme a Minitest). Creo que el troceo/burla en RSpec podría ser más avanzado, por lo que si ya lo aprendió, simplemente continúe usándolo. De lo contrario, quédese con Minitest, lo que le permitirá colaborar con personas que no conocen RSpec, como yo.
Véase p. http://stackoverflow.com/questions/8423227/migrating-from-rspec-to-minitestspec – matt
Quizás estas 2 preguntas se deben combinar, ¿hay alguna manera de unir las preguntas? –
¡Cerrado con +12 votos! votando para abrir –