2012-08-26 11 views
9

Tengo una solución VS2010 que estoy tratando de actualizar a VS2012.DeploymentItem comportándose de manera diferente en VS2010 y VS2012

Tengo un problema con las pruebas de la unidad MSTest en VS2012. Todas las pruebas incluyen atributos DeploymentItem en la clase de prueba.

[TestClass] 
[DeploymentItem(@"SubDir\SubDir2\models", "models")] 
public class UnitTests 
{ ... } 

En 2010, es copiar correctamente los archivos dependientes del directorio SolutionDirectory\SubDir\SubDir2\models.

En el año 2012, es intentar copiar desde el directorio donde las pruebas se despliegan SolutionDirectory\UnitTests\bin\debug\SubDir\SubDir2\models

Busco una forma de restaurar el comportamiento anterior.

Respuesta

1

Después de instalar vs2012 y .net 4.5, parece que deploitemattribute no está sincronizado con el lugar donde mueve los archivos y dónde el ejecutable busca los archivos durante la ejecución de las pruebas.

barato solución:

  1. dejar el camino deploymentitemattribute tal cual
  2. ver donde el archivo se trasladó a
  3. Cambiar el código de prueba a mirar en esa ubicación

Antes esta actualización mstest fue lo suficientemente inteligente como para encontrar elementos de implementación, incluso si se movieron a un subdirectorio en el directorio bin. Parece que este ya no es el caso.

Así que antes de la actualización de una línea de su código de prueba de unidad podría tener este aspecto ...

FileInfo fi = new FileInfo("temp.txt"); 

después de la actualización de una línea de su código de prueba de unidad podría tener este aspecto ...

FileInfo fi = new FileInfo("\SubDir\SubDir2\models\temp.txt"); 
+1

Veo lo que dices. Desafortunadamente, las pruebas que intentaba restaurar eran más "integradas" que "pruebas unitarias", y la ruta al binario estaba codificada en otro lugar. Mi "solución alternativa económica" consistía en hacer enlaces a los archivos del proyecto y configurarlos para que se copiaran en compilación, luego modifiqué mi atributo "DeploymentItem" para copiar desde el directorio de compilación. Funciona, pero no aborda el problema más grande. –

4

Si crea un archivo de configuración de prueba en su solución, habilite la implementación (la implementación predeterminada está desactivada en la configuración de prueba) y selecciónelo en el explorador de prueba (Prueba -> Configuración de prueba -> Seleccionar archivo de configuración de prueba). entonces debería funcionar sin cambiar el código también.

+2

funcionó para mí :) VS 2010 proyecto para VS 2012, no estaba copiando mis testdata hasta que lo hice. – Cadab

Cuestiones relacionadas