2009-11-30 22 views

Respuesta

17

por la página MSDN ...

Las rutas relativas son relativas a la configuración RelativePathRoot encontrado en el archivo .testrunconfig.

Esa configuración es, de forma predeterminada, el directorio de soluciones . Por lo tanto, si usted tiene esta estructura del proyecto

SecretProject\ 
    ComponentA\ 
    ComponentA.Test\ 
     Resources\ 
      required.xml 
     ComponentA.Test.csproj 
     Tests.cs 
    SecretProject.sln 

Y desea implementar required.xml, vas a crear un DeploymentItemAttribute como esto

[TestClass] 
public class Tests 
{ 
    [TestMethod] 
    [DeploymentItem("ComponentA.Test\Resources\required.xml")] 
    public void Test() 
    { 

    } 
} 

Parece el archivo de propiedades necesitan establecerse en 'Contenido' y 'Copiar siempre' o 'Copiar si es nuevo'. Hay ejemplos avanzados en this MSDN page.

+3

"Parece que las propiedades de los archivos tienen que ser puesto a 'contenido' y 'Copiar siempre' o 'Copiar si es más nuevo'." Te sorprendería lo difícil que fue encontrar esto ... – SouthShoreAK

+0

@SouthShoreAK - ¿Dónde se encontró? –

+0

@ScottLangham Está en las propiedades de archivo del elemento de implementación. En el 'Explorador de soluciones' debe resaltar el archivo (en este caso 'required.xml'), haga clic con el botón derecho y seleccione propiedades. Deberías verlo allí. – dpimente

1

Suponer que el valor predeterminado de RelativePathRoot es el directorio donde reside su solución no era correcto en mi caso, ni RelativePathRoot se definió en mi archivo .testrunconfig. Encontré el valor predeterminado de RelativePathRoot como el directorio/bin/debug para la solución.

Caminando hacia atrás desde ese punto, luego caminar hasta mi archivo que estaba intentando implementar para la prueba de la unidad funcionó bien.

0

Así que voy a agregar mi experiencia.

Así que si está utilizando el archivo .testrunconfig, eso prevalecerá (anulará) lo que estoy diciendo a continuación.

Pensé que había algunas opciones.

relativa a la .csproj actual

relativa a la .sln

En relación con el archivo .cs actuales

Finalmente llegué a mi sistema de generación de trabajo mediante el uso de la "relativo al actual archivo .cs "enfoque.

En mi ejemplo, necesitaba una Xsd de un proyecto diferente copiado para mi UnitTest. Pero el tipo de archivo no importa.

Ejemplo:

c: \ myfolder \ MyXsdProject \ XSDs \ MyCoolXsd.xsd

c: \ myfolder \ MyCsharpUnitTestProject \ MySubFolder1 \ MySubFolder2 \ MyUnitTestClass.cs

namespace MyCsharpUnitTestProject.MySubFolder1.MySubFolder2 
{ 

    [TestClass] 
    [DeploymentItem(@"..\..\..\MyXsdProject\XSDs\MyCoolXsd.xsd")] 

    public class MyUnitTestClass 
    { 
    } 
}