Hace un tiempo que tengo preparado el "Code Complete" de Mcconnell. Ahora lo leí de nuevo en Hunt & Thomas '"The Pragmatic Programmer": ¡Use aserciones! Nota: No afirmaciones de prueba de unidad, me refiero a Debug.Assert()
.¿Las Pruebas Unitarias hacen que Debug.Assert() sea innecesario?
Después de las preguntas SO When should I use Debug.Assert()? y When to use assertion over exceptions in domain classes afirmaciones son útiles para el desarrollo, porque las situaciones "imposibles" se pueden encontrar bastante rápido. Y parece que se usan comúnmente. Por lo que entendí las afirmaciones, en C# a menudo se usan para verificar variables de entrada para valores "imposibles".
Para mantener las pruebas unitarias concisas y aisladas tanto como sea posible, doy clases y métodos con null
sy entrada ficticia "imposible" (como una cadena vacía).
Dichas pruebas documentan explícitamente, que no dependen de alguna entrada específica. Nota: Estoy practicando lo que Meszaros "Patrones de prueba de xUnit" está describiendo como Minimal Fixture.
Y ese es el punto: si tuviera una afirmación protegiendo estas entradas, explotarían mis pruebas unitarias.
Me gusta la idea de la Programación Assertative, pero, por otro lado, no es necesario forzarla. Actualmente no puedo pensar en ningún uso para Debug.Assert()
. Tal vez hay algo que extraño? ¿Tiene alguna sugerencia, donde podrían ser realmente útil? Tal vez solo sobreestimar la utilidad de las afirmaciones? ¿O tal vez mi forma de prueba necesita ser revisada?
Edit: Best practice for debug Asserts during Unit testing es muy similar, pero no responde la pregunta que me molesta: ¿Debería preocuparme por Debug.Assert()
en C# si pruebo como lo he descrito? En caso afirmativo, ¿en qué situación son realmente útil? En mi punto de vista actual, tales Pruebas Unitarias harían innecesario el Debug.Assert()
.
Otro punto: si realmente crees que esta es una pregunta duplicada, solo publica un comentario.
Tenga en cuenta que el marco de prueba de Visual Studio * no * trata una depuración. Confirma la falla como una falla de prueba de la unidad. – yoyo