¿Cómo se aplican TDD y BDD a la configuración del proyecto?

¿Por qué está configurando un proyecto antes de escribir cualquier código?

Cuando practico TDD, si intento escribir código que depende de los detalles de la máquina (como la dirección IP, el nombre de host o la ubicación de los archivos en el sistema de archivos), la prueba me resulta un poco difícil de escribir: generalmente termino con configuración de prueba excesiva. Cuando pienso en ejecutar la prueba en la máquina de otra persona, puedo ver cómo lo pasarían mal. Esto me lleva a mover estos detalles a la pila de llamadas. En el peor de los casos, termino inyectando estos detalles en el código de producción, lo que facilita el cambio en mis pruebas. En el mejor de los casos, muevo los detalles tan arriba en la pila de llamadas que solo el punto de entrada se preocupa por ellos, y la gran mayoría de mis pruebas simplemente no me importan.

Por lo general, no los necesito, pero a veces escribo un conjunto de pruebas de humo simples que verifican que el sistema maneja con gracia el caso en el que algunos de estos detalles de configuración no se proporcionan o obviamente son incorrectos. (Cosas como señalar a una ruta de archivo no grabable).

No hay razón para probar la configuración. De hecho, deberías burlarte de esas cosas. El objetivo de las pruebas unitarias es comprobar que su código de producción funciona, no la configuración. Está yendo por la ruta incorrecta si cree que TDD es para probar la configuración. Si habla de Pruebas de integración entre unidades de código, eso es diferente. Nunca prueba la configuración.

More Interesting

¿Qué características del software de gestión de proyectos son las más importantes para usted?

Quiero abrir una empresa de desarrollo de software. Tengo 18 años, estoy a punto de graduarme de HS, y casi no tengo experiencia en programación. ¿Qué debo hacer? ¿Puedo hacerlo?

Ingeniería de software: ¿Cuántas soluciones hay para este rompecabezas?

¿Cómo pueden las aplicaciones de software resolver problemas y satisfacer las necesidades de los clientes?

¿Qué es mejor: M.Tech en electrónica o trabajo de software?

¿Qué equipos se consideran 'elite' (considerados los más inteligentes o trabajan en las tareas más difíciles) en Google?

Cómo crear complementos basados ​​en datos con After Effects

¿Qué hace un ingeniero de Linux todo el día en el trabajo?

¿Qué significa un trabajo de software? ¿Cuántos tipos de ramas hay? ¿Cómo funcionan y qué hacen?

¿Cuáles son los rasgos más notables sobre los mejores compañeros de trabajo (más competentes) que ha tenido en su carrera?

Mi empresa me ofreció un puesto de gestión de línea en un entorno Agile / Scrum. ¿Tiene sentido?

Si la programación paralela es significativamente más rápida, ¿por qué no se resuelven todos los problemas de programación utilizando esa técnica?

¿Es la discriminación femenina en la ingeniería de software una mentira? Soy una mujer y siempre he sido respetada e incluida por mis compañeros.

Estoy interesado en programar y trabajar como ingeniero de software, pero mi especialidad en la universidad es contabilidad, ¿qué debo hacer?

¿Cuáles son algunos parámetros únicos que se pueden usar para identificar de manera única los sistemas informáticos modernos ... parámetros que no se pueden alterar?