Pregunta

En el libro de Roy Osherove [Unidad de Pruebas] [1] libro, explica que una sola unidad de prueba debe contener entre 0 y 1 se burla. Sugiere que si la prueba no está afirmando en el simulacro, entonces no usar una maqueta en absoluto. Se demuestra además cómo utilizar un marco de aislamiento para producir los trozos, los cuales fueron creados de manera similar a los simulacros. Él pone ningún límite sugerido en el número de recibos creados por prueba.

Mi pregunta es la siguiente: se pueden aplicar esas recomendaciones a todos los marcos de aislamiento (o todos los marcos populares C #)? En otras palabras, ¿existe un marco que puede generar sólo se burla - no talones? ¿Existe un marco de aislamiento que no distingue burla de los talones?

Sólo por curiosidad lo fácil recomendaciones de Osherove se pueden convertir en los estándares de codificación.

[1]: http: // el sistema bajo prueba incluso no está siendo probado en absoluto, en lugar datos devueltos desde burla es lo que se está probando.

¿Fue útil?

Solución

Hay marcos como Moq que no distinguen a ellos. FakeItEasy va incluso más allá y llama falsos objetos de todo.

Sí, se puede aplicar, porque se burla son simplemente más inteligentes talones. No importa mucho si recibo se llama como simulacro, siempre y cuando no se afirman en más de una maqueta. Esa recomendación en otras palabras, es más acerca de la afirmación de una sola cosa por prueba. Explícitamente distinguir burla y talones no es tan importante.

Otros consejos

Esto corresponde directamente a la recomendación de Osherove que sólo realice un afirman por prueba. En su léxico una stub es una clase que proporciona la entrada falsa para el sistema bajo prueba, mientras que un mock es una clase que le permite a la salida de prueba del sistema bajo prueba (usando una clase falsa).

Ya sea un marco utiliza una convención de nombres similares es la altura de sus diseñadores, pero el nivel (si está de acuerdo con su recomendación) debe ser que sólo un afirman que se realiza por prueba, y donde la afirmación requiere un objeto falso - que sólo un objeto falsa debe ser probado por prueba.

Por supuesto, no todo el mundo está de acuerdo con su recomendación, por lo que no todo el mundo lo hace de esta manera.

Philip Calçado escribió recientemente acerca de esto: http://fragmental.tw/2010/12/14/one-mock-per-test-considered-not-awesome/ . En resumen, dice que se centra en el número de burla de los talones / hay en la prueba Es desvíos de lo que debería ser la principal preocupación: escribir buenas especificaciones

.
> can those recommendations 
> [a single unit test should contain between 0 and 1 mocks] 
> be applied to all isolation frameworks ?

creo: La mayoría de las veces si se asume estas definiciones

  • unittest = Test de forma aislada (de lo contrario no es un unittest)
  • Una unittest para una característica
  • un talón o falso es un objeto para permitir el aislamiento, pero que no tiene ninguna función de verificación y
  • una maqueta es un esbozo con una funcionalidad extra que también permite la verificación

yo uso mi Moqfor que imita obtenerlo aquí

No estoy seguro de qué es exactamente lo que quieres decir acerca de "tropezar", pero supongo que es probablemente algo así como Moles from Microsoft que es muy bueno. Aquí

Ambos son realmente interesantes y muy fácil de usar.

Este tipo de regla debe ser visto como "ruedas de entrenamiento". Obviamente, una prueba que incluye muchos talones y se burla ha perdido el rumbo, pero insistiendo en una afirmación o expectativa por prueba es demasiado restrictiva. Como el enlace Calçado consultada señala, lo que importa es que hay un concepto por prueba, lo que podría implicar un par de afirmaciones o expectativas para hacer el punto. La última cosa que debe hacer es hacer cumplir una norma.

Una cosa más, que realmente debería estar hablando de "expectativas" Aquí, las interacciones individuales, en lugar de objetos simulados enteras. En la práctica, a menudo son los mismos, pero se difumina los conceptos.

Yo uso Rhino simulacro para mi prueba en C #. Puede generar burla o talones con él. Me animo a echar un vistazo a este marco: http://www.ayende.com/ proyectos / rino-mocks.aspx

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