2010-06-16 15 views
5

J'ai trouvé que DeploymentItemMSTest VS2010 - copie de fichiers DeploymentItem à différents endroits sur des machines différentes

[TestClass(), DeploymentItem(@"TestData\")] 

ne copie pas mes fichiers de données de test au même endroit lorsque les tests sont construits et fonctionnent sur des machines différentes.

Les fichiers de données de test sont copiés dans le « bin \ debug » répertoire dans le projet d'essai sur ma machine, mais sur la machine de mon ami, ils sont copiés « TestResults \ nom_machine AA-MM-JJ HH_MM_SS \ Out » .

Le répertoire bin \ debug sur ma machine peut être obtenue avec le code:

string appDirectory = 
Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); 

et le même code renverra TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out sur mes amis PC.

Cependant, ce n'est pas vraiment le problème. Le problème est que les fichiers de données de test que j'ai créés ont une structure de dossiers et que cette structure de dossiers n'est conservée sur ma machine que lorsqu'elle est copiée dans bin \ debug, alors que sur mon ordinateur, seuls les fichiers sont ajoutés au répertoire TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out. Cela signifie que les tests vont passer sur ma machine et échouer sur son!

Y a-t-il un moyen de s'assurer que DeploymentItem copie toujours dans le dossier bin \ debug? Ou un moyen de s'assurer que la structure de dossier sera conservée lorsque DeploymentItem copie les fichiers dans le dossier TestResults\*name_machine YY-MM-DD HH_MM_SS*\Out?

Répondre

2

Après avoir joué pendant un certain temps, il semble que la meilleure façon de traiter avec elle est de faire en sorte que pour chaque sous-répertoire, vous ajoutez un nouveau DeploymentItem en vous assurant que vous spécifiez le « outputDirectory », comme ceci:

[TestClass(), DeploymentItem("TestData\\", "TestData"), 
DeploymentItem(@"TestData\\SubDir\\", "TestData\\SubDir")] 

Cela permet aux tests de s'exécuter sur votre machine - espérons que cela aide quelqu'un!

+0

Cela a résolu mon problème de chemin relatif exactement. J'ai eu le même problème avec les fichiers stockés dans les sous-dossiers et les chemins relatifs définis dans le fichier app.config. Thx –

+1

L'attribut 'DeploymentItem' cible uniquement les méthodes. Comment fonctionne ce que vous écrivez? –