DeploymentItemAttribute, classe
Spécifiez un fichier ou un répertoire qui doivent être déployés avec les assemblys avant d'exécuter un test. Insérez cet attribut à une classe ou une méthode de test. Vous pouvez utiliser plusieurs instances. Cet attribut n'est pas héritée.
Hiérarchie d'héritage
Object
Attribute
Microsoft.VisualStudio.TestTools.UnitTesting.DeploymentItemAttribute
Espace de noms : Microsoft.VisualStudio.TestTools.UnitTesting
Assembly : Microsoft.VisualStudio.QualityTools.UnitTestFramework (dans Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll)
Syntaxe
'Déclaration
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Method, AllowMultiple := True)> _
Public NotInheritable Class DeploymentItemAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)]
public sealed class DeploymentItemAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Method, AllowMultiple = true)]
public ref class DeploymentItemAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, AllowMultiple = true)>]
type DeploymentItemAttribute =
class
inherit Attribute
end
public final class DeploymentItemAttribute extends Attribute
Le type DeploymentItemAttribute expose les membres suivants.
Constructeurs
Nom | Description | |
---|---|---|
DeploymentItemAttribute(String) | Spécifie un élément à déployer avant qu'une série de tests ne démarre. | |
DeploymentItemAttribute(String, String) | Spécifie un élément à déployer avant qu'une série de tests ne démarre. |
Début
Propriétés
Nom | Description | |
---|---|---|
OutputDirectory | Obtient le chemin d'accès du répertoire dans lequel l'élément est copié. | |
Path | Obtient le chemin d'accès du fichier ou dossier source à copier. | |
TypeId | Lors de son implémentation dans une classe dérivée, obtient un identificateur unique pour Attribute. (Hérité de Attribute.) |
Début
Méthodes
Nom | Description | |
---|---|---|
Equals | Infrastructure. Retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
GetHashCode | Retourne le code de hachage de cette instance. (Hérité de Attribute.) | |
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) | |
IsDefaultAttribute | En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut pour la classe dérivée. (Hérité de Attribute.) | |
Match | En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié. (Hérité de Attribute.) | |
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
Début
Implémentations d'interface explicite
Nom | Description | |
---|---|---|
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute.) | |
System#Runtime#InteropServices#_Attribute#GetTypeInfo | Récupère les informations de type pour un objet, qui peuvent être utilisées pour obtenir les informations de type d'une interface. (Hérité de Attribute.) | |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute.) | |
System#Runtime#InteropServices#_Attribute#Invoke | Fournit l'accès aux propriétés et aux méthodes exposées par un objet. (Hérité de Attribute.) |
Début
Notes
Visual Studio 2012 exécute les tests soit dans le dossier dans lequel vous les avez générés ou dans un dossier de déploiement distinct qui sont uniques à la série de tests. Si un dossier de déploiement est utilisé, le moteur de test crée un dossier de déploiement et copiez -y les assemblys contenant le code de test, l'application, et tous les assemblys qu'ils référencent.
Mais certains tests requièrent des fichiers supplémentaires, comme les tests, les fichiers de configuration, les bases de données, ou des assemblys explicitement chargés. Pour rendre ces fichiers disponibles pendant le test, vous devez spécifier qu'ils doivent être copiés avec les assemblys de test. Voici la meilleure façon de faire ceci :
Copiez les fichiers dans le répertoire de cible de build dans le cadre du processus de génération.
S'ils sont spécifiques à un projet de test, incluez-les en tant que fichiers de contenu du projet de test Visual Studio. Sélectionnez-les dans l'Explorateur de solutions et définissez la propriété Copiez pour sortir valeur Copier si plus récent.
Sinon, définissez une tâche post-build de copier les fichiers dans le répertoire de sortie de génération. Par exemple :
xcopy /Y /S "$(SolutionDir)SharedFiles\*" "$(TargetDir)"
Ouvrez les propriétés de votre projet de test. Dans un projet C#, ouvrez la page Événements de build. Dans un projet Visual Basic, ouvrez la page Compiler et choisissez Événements de build. Ajoutez la commande Copier au champ Événement post-build.
Utilisez DeploymentItemAttribute sur les méthodes de test ou les classes de test pour spécifier les fichiers et dossiers qui doivent être copiés du répertoire de sortie de génération vers le répertoire de déploiement.
Envisagez d'exécuter vos tests unitaires directement dans le répertoire de sortie de génération, afin que le test s'exécute plus rapidement. Ceci est particulièrement utile sur le serveur de builds après avoir vérifié vos tests. Pour cela, ajoutez un fichier .runsettings à votre solution, incluez <DeploymentEnabled>False</DeploymentEnabled>, puis sélectionnez le fichier dans l'Test, menu Paramètres de test. Le même effet se produit dans toute série de tests dans laquelle DeploymentItemAttribute n'est pas utilisé du tout.
Toutefois, vous pouvez préférer ne pas faire si vous souhaitez pouvoir examiner les fichiers de données après une opération.
Vous ne pouvez pas éviter d'utiliser un dossier de déploiement si vous utilisez un fichier .testsettings, requis pour le Web et des tests de charge, les tests codés de l'interface utilisateur, et tout test dans lequel vous déployez une application aux ordinateurs distants.
Dans une série de tests, tous les éléments des tests qui doivent être exécutés sont déployés avant tout test commence.
Pour plus d'informations, consultez Comment : déployer des fichiers pour les tests.
DeploymentItemAttribute possède deux paramètres :
Chemin d'élément source est relatif au dossier de sortie de génération. Ce peut être un fichier ou dossier. Pour éviter la dépendance sur votre structure de projet, entrez l'élément dans votre répertoire de sortie de génération dans le cadre du processus de génération. Utilisez l'attribut d'élément de déploiement pour le déploiement de ce dernier.
(Facultatif) Ciblage le chemin d'accès doit être un dossier, et il est relatif au répertoire de déploiement. Si le dossier n'existe pas, elle sera créée. La valeur par défaut est le répertoire de déploiement.
Vous ne pouvez pas modifier le nom de fichier à l'aide de DeploymentItem.
Les exemples suivants illustrent l'utilisation d'DeploymentItemAttribute:
[DeploymentItem("file1.xml")]
Copie file1.xml du répertoire de sortie de génération vers le répertoire de déploiement.[DeploymentItem(@"Testfiles\")]
Copie tous les fichiers et dossiers dans le dossier de Testfiles du dossier de sortie de la génération dans le dossier de déploiement. Les sous-dossiers sont répliqués dans le dossier de déploiement.[DeploymentItem("file2.xml", "DataFiles")]
Crée un dossier nommé DataFiles dans le dossier de déploiement, et copie file2.xml du dossier de sortie de la génération des fichiers de données.Notes
Si vous utilisez le deuxième paramètre, il doit toujours être le chemin d'accès d'un dossier, jamais un fichier.Si le dossier n'existe pas, elle sera créée.Vous ne pouvez pas modifier le nom du fichier à l'aide de DeploymentItem.
[DeploymentItem(@"Resources\file2.xml", "DataFiles")]
Crée un dossier nommé DataFiles dans le dossier de déploiement s'il n'existe pas. Copie file2.xml du dossier de ressources dans le dossier de sortie de la génération en fichiers de données. Notez que le dossier de ressources n'est pas dupliqué dans le dossier de destination.[DeploymentItem(@"TestFiles\", "TestFiles")]
Copie le contenu de TestFiles dans un sous-dossier du dossier de déploiement. Les sous-dossiers sont répliqués sous la destination.[DeploymentItem(@"..\..\file1.xml")] (non recommandé)
Copie un élément du répertoire du projet. Cet exemple illustre la structure de projet typique dans laquelle le répertoire de sortie est, par exemple, dans le bin\Debug.Au lieu de la structure de projet de cette manière, définissez la propriété Imprime dans la sortie du fichier. Déployer le fichier du répertoire de sortie de génération.
[DeploymentItem(@"C:\MyDataFiles\")]
Copie le contenu du dossier de MyDataFiles dans le dossier de déploiement.(Si vous utilisez un fichier .testsettings ) [DeploymentItem("%myDir%\myFile.txt")]
Déploie le fichier myFile.txt si ce fichier existe dans le répertoire auquel %myDir% est résolu.
Pour plus d'informations sur l'utilisation d'attributs, consultez Extension des métadonnées à l'aide des attributs.
Exemples
Le test suivant lit les fichiers nommés « test*.xml ». Pour rendre les fichiers disponibles au test et à l'application testée, ils sont identifiés à l'aide de DeploymentItemAttribute. La méthode de test vérifiera que les fichiers se trouvent sous le répertoire de déploiement, avant de passer en fonction pour tester l'application.
using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace DeploymentTest
{
[TestClass]
public class UnitTest1
{
[TestMethod]
// Copy files from build directory:
[DeploymentItem("test1.xml")]
[DeploymentItem("test2.xml", "Data")]
// Copy files from Resources subdirectory:
[DeploymentItem("Resources\\test3.xml")]
[DeploymentItem("Resources\\test4.xml", "Data")]
public void ConstructorTest()
{
// Verify that the files exist in the deployment directory
Assert.IsTrue(File.Exists("test1.xml"));
Assert.IsTrue(File.Exists("Data\\test2.xml"));
Assert.IsTrue(File.Exists("test3.xml"));
Assert.IsTrue(File.Exists("Data\\test4.xml"));
// Now test the application ...
}
}
}
Imports System
Imports System.IO
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Namespace DeploymentTest
<TestClass()> _
Public Class UnitTest1
<TestMethod()> _
<DeploymentItem("test1.xml")> _
<DeploymentItem("test2.xml", "Data")> _
<DeploymentItem("Resources\test3.xml")> _
<DeploymentItem("Resources\test4.xml", "Data")> _
Sub ConstructorTest()
Assert.IsTrue(File.Exists("test1.xml"))
Assert.IsTrue(File.Exists("Data\test2.xml"))
Assert.IsTrue(File.Exists("test3.xml"))
Assert.IsTrue(File.Exists("Data\test4.xml"))
' Now test the application ...
End Sub
End Class
End Namespace
Sécurité des threads
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Voir aussi
Référence
Microsoft.VisualStudio.TestTools.UnitTesting, espace de noms