Antecedentes
Estoy trabajando en un proyecto con C # .NET, y acabo de agregar un nuevo proyecto de prueba unitaria a mi solución en Visual Studio. La forma en que siempre he estado haciendo esto es:
- Crear un nuevo proyecto de prueba unitaria.
- Haga que ese proyecto incluya una referencia al proyecto bajo prueba .
- Solo incluye (
using
) el proyecto.
Supongo que la otra forma en que podrías hacerlo sería ...
- Crear un nuevo proyecto de prueba unitaria.
- Haga que ese proyecto incluya una referencia al proyecto bajo prueba .
- Haga que el proyecto de prueba de unidad comparta un espacio de nombres con el proyecto bajo prueba .
Pregunta
¿Existe una forma aceptada de hacer esto para proyectos en el mundo .NET, o es solo una opinión y no hay nada más?
c#
unit-testing
tdd
visual-studio
project-structure
Fisgonear
fuente
fuente
MethodName_StateUnderTest_ExpectedBehavior()
, y estoy seguro de que podría encontrar nombres no conflictivos adecuados para las clases de prueba. La verdadera pregunta es: ¿realmente quieres que esos tipos aparezcan en tu inteligencia?Respuestas:
Sus pruebas unitarias están en un proyecto separado y cumplen una función separada de su código principal, por lo que ponerlas en un espacio de nombres separado tiene más sentido para mí.
Si está considerando ponerlos en el mismo espacio de nombres solo para guardar la
using
línea, entonces no lo haga. Menos código es bueno, un código más claro es mejor.fuente
He usado proyectos de pruebas unitarias con el mismo espacio de nombres que el proyecto real (eliminando manualmente el
Tests
sufijo en el espacio de nombres del proyecto de prueba) durante algunos años sin problemas.Creo que conduce a un código más directo, por lo que generalmente sugiero seguir ese enfoque. Algunos de los inconvenientes, como los posibles conflictos de espacio de nombres, simplemente no deberían suceder cuando se trata de un proyecto de prueba de unidad, ya que ya está siguiendo algunas convenciones de prueba para eso, como el sufijo con todas las clases de prueba
Tests
. Además, me parece bastante intuitivo tener las clases y las clases de prueba en el mismo espacio de nombres.Algunas personas pensarán que es extraño, pero este no debería ser el caso, ya que muchos ensamblados de marcos también usan esta estrategia de tener múltiples DLL que tienen clases en los mismos espacios de nombres: no se supone que sea algo sorprendente o malo. practicar en y por sí mismo.
Sin embargo, creo que este es más por gusto personal, por lo que no es realmente "responsable" per se. Dicho esto, "mi voto", según el razonamiento anterior, es probarlo usted mismo al principio, y si le gusta el enfoque, hágalo.
fuente