2010-01-25 15 views
5

Quiero usar una variable estática como el parámetro DeploymentItem en una prueba de unidad MSTest, pero parece que no puedo hacerlo. Hay un archivo XSL que necesita ser copiado junto con el archivo DLL cuando se ejecuta la prueba de unidad, y que definen la ubicación comoC# usando la variable estática como parámetro para DeploymentItem

Sin embargo, cuando lo haga lo siguiente:

[TestMethod] 
[DeploymentItem(DLL)] 
[DeploymentItem(_xslPath)] 
public void XmlToResultsTest() { } 

I conseguir este error de compilación:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

bien bien, muy bien, pero parece tan sucio para ensamblar el camino a mí mismo:

[DeploymentItem(@"MyProjectDir\transform.xsl")] 

¿Estoy siendo demasiado exigente con respecto al deseo de usar Path.Combine? ¿Hay alguna otra alternativa que me falta? Supongo que podría simplemente poner el archivo XSL en el directorio raíz de la solución para que no tenga que pasar el directorio del proyecto como parte de la ruta.

Respuesta

10

Los atributos solo pueden usar cadenas constantes, por lo que no: no puede hacer esto (tendría que usar la versión precombinada o la concatenación literal - no Path.Combine). También podría usar la configuración de implementación del proyecto de prueba (testrunconfig?), Pero francamente prefiero utilizar el enfoque NUnit de simplemente marcar el archivo (en el csproj, como es normal) para la implementación. Todavía tengo que averiguar por qué MS añadió una manera independiente de la definición de este ...

0

Esto funciona muy bien para mí:

[TestClass] 
[DeploymentItem(TestParams.ConfigFileName)] 
public class MyTest 
{ 
    private static class TestParams 
    { 
     public const string ConfigFileName = "TestConfig.xml"; 
    } 
// ... 
} 
Cuestiones relacionadas