C# : Les Tests unitaires – Part 3 1/2 – Déploiement de fichiers et jeux de tests

Lors de l’exécution d’un test unitaire il est souvent utile de déployer des fichiers, comme par exemple des fichiers xml.

Ces fichiers xml contiendrons les données de tests, ainsi pour un même test il sera possible de l’exécuter avec plusieurs jeux de données, ce fichier xml est donc une DataSource pour le test.

Le problème c’est qu’un projet de tests unitaires ne se comporte pas comme un projet web il ne peut pas par default déployer des fichiers.

Cet article va donc expliquer comme déployer des fichiers puis comment automatiser l’exécution des tests avec le contenu des ces fichiers en l’utilisant comme une DataSource.

Le déploiement

Dans notre exemple, on va dans le projet créer un répértoire « TestData ».

Dans celui-ci on va créer un fichier xml « NumbersData.xml » avec comme contenu :

<Numbers>
<Number c="1" b="2" />
<Number c="1" b="3" />
<Number c="1" b="4" />
<Number c="1" b="5" />
<Number c="1" b="6" />
<Number c="1" b="7" />
<Number c="1" b="8" />
</Numbers></pre>

Tout d’abord, il faut configurer notre projet de tests unitaire à déployer des fichiers.

Pour ceci il faut cliquer sur le fichier « Local.testsettings » qui se trouve dans le répertoire « Solution Items »  qui a été créé dans la solution:

Ca ouvre une fenêtre de configuration, puis choisir deployment, il faut que la case « Enable deployment » soit cochée.

Enfin pour déployer ce fichier dans le répertoire d’exécution du test unitaire il faut rajouter l’attribut « DeploymentItem » à la methode de test :

[DeploymentItem(@"TestData\NumbersData.xml", "TestData"),TestMethod]

Cet attribut prend 2 paramètres :

  • Le chemin du fichier xml
  • Son répertoire désiré de destination

Voici un exemple de test unitaire qui déploie un fichier notre fichier xml et qui va vérifier qu’il y a bien des éléments dedans.

[DeploymentItem(@"TestData\NumbersData.xml", "TestData"),TestMethod]
public void TestXmlFilePath()
{
//Arrange
string filePath = Path.Combine(TestContext.TestDeploymentDir, @"TestData\NumbersData.xml");

//Act
XDocument document = XDocument.Load(filePath);

//Assert
Assert.IsTrue(document.Elements().Count() > 0);
Debug.WriteLine(DateTime.Now.TimeOfDay.ToString());
}

Le chemin ou sera déployer le fichier est : 

Path.Combine(TestContext.TestDeploymentDir, @"TestData\NumbersData.xml");

TestContext.TestDeploymentDir étant différent à chaque exécution de test. En effet à chaque exécution de test, un nouveau dossier est créé (avec un nom différents) dans le répertoire « TestResults » de la solution.

Remarque : il faut dans les propriétés du fichier xml, choisir pour la propriété « Copy to output directory » la valeur « copy always »

 

Voila pour le déploiement de fichiers.

La 2ème partie traitera des jeux de tests avec des fichiers xml.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s