web-dev-qa-db-fra.com

Attributs DataTestMethod et DataRow dans MSTEST

J'ai vu dans une vidéo Microsoft sur la mise à jour 2 de Visual Studio concernant ces attributs. Cependant, je ne trouve aucune autre information à leur sujet et je ne parviens pas à construire un projet avec eux.

Quelqu'un connaît-il ces attributs ou comment les faire fonctionner?

[DataTestMethod]
[DataRow("a", "b")]
[DataRow(" ", "a")]
public void TestMethod1(string value1, string value2)
{
    Assert.AreEqual(value1 + value2, string.Concat(value1, value2));
}
36
Simon Vane

Je sais que c'est une vieille question, mais il y a maintenant une bonne solution publiée sur https://blogs.msmvps.com/bsonnino/2017/03/18/parametrized-tests-with-ms-test/

En un mot, vous devrez installer MSTest.TestFramework et MSTest.TestAdapter, et supprimez les références à Microsoft.VisualStudio.QualityTools.UnitTestFramework. Vous pouvez ensuite indiquer un test paramétré avec le [DataTestMethod], et pouvez ajouter vos paramètres à l'aide de [DataRow] attribut, selon votre exemple. Les valeurs de [DataRow] l'attribut sera transmis à la méthode de test dans l'ordre dans lequel ils sont spécifiés.

Notez que les valeurs dans [DataRow] l'attribut doit être primitif, vous ne pouvez donc pas utiliser un DateTime ou decimal par exemple. Si vous les voulez, vous devrez contourner cette limitation (par exemple, au lieu d'avoir un paramètre DateTime pour représenter une date, vous pouvez avoir trois paramètres entiers représentant l'année, le mois et le jour, et créer le DateTime au sein du corps d'épreuve).

39
Tim

Enfin, cette fonctionnalité a été ajoutée (toujours en pré-version) https://blogs.msdn.Microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with- mstest-v2 /

Fondamentalement, il faut faire deux choses:

1) Installez deux packages NuGet (les versions n'ont pas vraiment d'importance, mais c'est ce que j'ai)

  <package id="MSTest.TestAdapter" version="1.1.5-preview" targetFramework="net452" />
  <package id="MSTest.TestFramework" version="1.0.6-preview" targetFramework="net452" />

2) Supprimez le refenrece de l'ancienne bibliothèque de test, car il a les mêmes attributs définis dans les mêmes espaces de noms - cela a été fait pour obtenir une compatibilité descendante

Microsoft.VisualStudio.QualityTools.UnitTestFramework
13
ironstone13

Il semble que cela ne soit disponible que dans le projet de test unitaire pour WinRT/Metro et maintenant avec la mise à jour 2, Windows Phone 8. C'est un mystère pour moi que ce n'est pas disponible pour tous les tests avec mstest.

8
Simon Vane