Métadonnées DeploymentItem
Les métadonnées DeploymentItem identifient les dépendances de fichiers et de dossiers pour les fichiers et dossiers utilisés par les tests pendant l’exécution des tests, afin que Taef puisse les identifier et les copier de manière appropriée (par exemple, dans un scénario d’exécution inter-ordinateurs, Taef déploie les fichiers identifiés par la propriété DeploymentItem sur l’ordinateur de test spécifié).
L’implémentation de Taef DeploymentItem est très similaire à celle trouvée dans la classe DeploymentItemAttribute dans VSTS.
Les métadonnées DeploymentItem peuvent être appliquées au niveau de l’assembly, de la classe ou du test. Les éléments spécifiés par les métadonnées DeploymentItem seront déployés par l’exécution du programme d’installation correspondant (assembly, classe de test ou test). Si les métadonnées DeploymentItem spécifient une dépendance (par exemple, un fichier) et que cette dépendance existe déjà à la destination, TAEF effectue une comparaison CRC et copie uniquement le fichier s’il a changé. Si les métadonnées DeploymentItem spécifient une dépendance et que la dépendance est introuvable, une erreur est enregistrée qui échouera le test (ou tous les tests de classe de test ou d’assembly, en conséquence). TAEF ne déploie les fichiers qu’une seule fois par assembly, classe ou test, c’est-à-dire que le déploiement ne se produit pas à chaque extension d’assembly, de classe ou de test si celles-ci sont pilotées par les données.
Syntaxe
[DeploymentItem("FileOrFolderToDeploy", "DestinationFolder")]
où FileOrFolderToDeployest un fichier ou un chemin d’accès au dossier relatif au répertoire où se trouve la dll de test. Si FileOrFolderToDeploy est un dossier, tout son contenu est copié ; Toutefois, le dossier lui-même n’est pas créé. S’il existe une hiérarchie de dossiers sous FileOrFolderToDeploy, Taef copie tous ces répertoires de manière récursive, en conservant leur hiérarchie de répertoires.
DestinationFolder est un chemin de dossier relatif au répertoire où se trouve la dll de test et où les éléments de déploiement sont copiés. Le chemin d’accès destinationFolder peut être spécifié à l’aide de .. notation (par exemple, .. \MyFiles).
Pour effectuer un déploiement dans le dossier où se trouve votre dll de test, vous pouvez omettre DestinationFolder.
[DeploymentItem("FileOrFolderToDeploy")]
Plusieurs éléments de la propriété sont pris en charge. Par exemple :
[TestClass]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public class UnitTest1
{
...
}
Exemples
[DeploymentItem("file1.xml")]
Les balises file1.xml situées en regard de la dll de test en tant que dépendance. Ces métadonnées peuvent être interprétées comme étant que le système déploie un élément nommé file1.xml situé dans le dossier en regard de la dll de test dans le répertoire de dll de test. Cette configuration n’est utile que pour les scénarios inter-ordinateurs.
[DeploymentItem("file2.xml", "DataFiles")]
Déploie un élément nommé file2.xml situé en regard de la dll de test dans le sous-répertoire DataFiles créé dans le répertoire de dll de test.
[DeploymentItem("C:\\\\MyDataFiles\\\\MyDataFiles2\\\\")]
Déploie tous les éléments et répertoires du répertoire C:\\MyDataFiles\\MyDataFiles2\\\. Cette configuration ne crée pas le répertoire MyDataFiles\MyDataFiles2 sous le répertoire de déploiement. Tous les fichiers et répertoires dans MyDataFiles seront déployés pour tester le répertoire dll. Pour copier l’intégralité de la structure de répertoires MyDataFiles\MyDataFiles2, vous devez spécifier MyDataFiles\MyDataFiles2 comme répertoire de sortie.
[DeploymentItem("%myDir%\\myFile.txt")]
Déploie le fichier myFile.txt si ce fichier existe dans le répertoire dans lequel %myDir% est résolu. Si TAEF ne parvient pas à résoudre la variable d’environnement, une erreur est générée.
Tests managés
L’attribut DeploymentItem (aka DeploymentItemAttribute) peut être appliqué à une méthode de test (décorée par l’attribut [TestMethod] ), à une classe de test (décorée par l’attribut [TestClass] ou à un assembly de test. Toutefois, étant donné que VSTS ne prend pas en charge cette propriété au niveau de l’assembly, pour appliquer cette propriété au niveau de l’assembly, vous devez l’appliquer à la configuration de l’assembly (décorée par l’attribut AssemblyInitialize) :
[AssemblyInitialize]
[DeploymentItem("file1.xml")]
[DeploymentItem("file2.xml")]
[DeploymentItem("file3.xml")]
public static AssemblySetup(TestContext testContext)
{
...
}
Tests natifs
Pour les tests natifs, le format de propriété est similaire au format de code managé. Toutefois, étant donné que les propriétés natives n’ont qu’une seule valeur, le chemin d’accès de l’élément et la destination facultative sont spécifiés dans la valeur de propriété, séparées par un caractère «> » :
BEGIN_TEST_CLASS(TestClassExample)
TEST_CLASS_PROPERTY(L"DeploymentItem", L"C:\\Dependencies\\>Dependencies")
END_TEST_CLASS()
Script Tests
Pour les tests de script, le format de propriété est le même que pour les tests natifs :
<method name="TestOne">
<TestMethodProperty name="DeploymentItem" value="C:\\Dependencies\\>Dependencies"/>
</method>