2010-01-25 17 views
5

Je souhaite utiliser une variable statique comme paramètre à DeploymentItem lors d'un test d'unité MSTest, mais il semble que je ne puisse pas le faire. Il y a un fichier XSL qui doit être copié en même temps que le fichier DLL lors de l'exécution de tests unitaires, et je définis l'emplacement commeC# en utilisant une variable statique en tant que paramètre de DeploymentItem

Cependant, quand je fais alors le suivant:

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

I obtenir cette erreur de construction:

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

Ok ok, très bien, mais il semble tellement sale pour assembler moi-même chemin:

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

Suis-je trop difficile ici pour vouloir utiliser Path.Combine? Y a-t-il une autre alternative qui me manque? Je suppose que je pourrais juste mettre le fichier XSL dans le répertoire de la solution racine afin que je ne devrais pas passer dans le répertoire du projet dans le cadre du chemin.

Répondre

10

Les attributs ne peuvent utiliser que des chaînes constantes, donc non: vous ne pouvez pas le faire (vous devez utiliser la version pré-combinée, ou la concaténation littérale - pas Path.Combine). Vous pouvez également utiliser les paramètres de déploiement de test-projet (testrunconfig?), Mais franchement, je préfère utiliser l'approche NUnit consistant simplement à marquer le fichier (dans csproj, comme d'habitude) pour le déploiement. Je dois encore comprendre pourquoi MS a ajouté une façon distincte de la définition de ce ...

0

Cela fonctionne bien pour moi:

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