Lo siguiente funciona en VS2012 para proyectos de prueba incluidos en múltiples soluciones sin usar un archivo de configuración de prueba:
1) Organice los archivos y carpetas que desea implementar en una carpeta en el directorio del proyecto de prueba.
2) En las propiedades del proyecto, cree un paso posterior a la compilación
xcopy /Y /S /i "$(ProjectDir)<Project_Folder_Name>\*" "$(TargetDir)<Deployment_Folder_Name>"
$(ProjectDir)
y $(TargetDir)
son macros que serán interpretadas por VS y deben incluirse como tales.
<Project_Folder_Name>
es el nombre de la carpeta creada en el paso 1.
<Deployment_Folder_Name>
es el nombre de la carpeta en la que se implementarán los archivos de prueba y debe nombrarse de modo que sea único cuando se implementen varios proyectos de prueba en el mismo directorio, por ejemplo <Project_Name>_TestInputs
.
Los archivos de prueba en ubicaciones compartidas también deben copiarse en la carpeta de implementación del directorio de destino para limitar las interacciones de prueba. Proporcione la ruta de origen relativa a la $(ProjectDir)
macro. Por ejemplo "$(ProjectDir)..\..\Common Files\C1219TDL-2008.xml"
.
3) Agregue una [DeploymentItem(source, destination)]
propiedad a cada método de prueba que use un archivo de implementación (práctica recomendada) o a la clase de prueba (práctica más fácil para los perezosos o apresurados, y la forma más fácil de actualizar un proyecto, las rutas relativas utilizadas anteriormente o un archivo de configuración de prueba )
En un método de prueba, source
es la ruta al archivo o directorio utilizado en el método de prueba en relación con el directorio de destino creado por xcopy
y destination
es la ruta al directorio en el que se creará en relación con el directorio de implementación. Para que las pruebas se ejecuten de manera consistente en el directorio de destino o en un directorio de implementación. La ruta de destino debe ser la misma que la ruta de origen sin una referencia de archivo. Ejemplo: [DeploymentItem("Example_TestInputs\C1219TDL-2008.xml","Example_TestInputs")]
. El DeploymentItem
debe incluirse en cada método que utiliza ese archivo o directorio.
En una clase, source
y destination
son ambos el nombre de la carpeta creada en el directorio de destino por xcopy
; esto copiará la carpeta completa al directorio de implementación cuando se ejecute cualquier prueba en la clase. Ejemplo:[DeploymentItem("Example_TestInputs","Example_TestInputs")]
4) En los métodos de prueba, ahora puede acceder a archivos y directorios con la confianza de que estarán en el directorio de trabajo, independientemente de dónde Visual Studio haya decidido colocarlo ese día, por ejemplo File.Exists(".\Example_TestInputs\C1219TDL-2008.xml")
.