5

Une fonctionnalité que je voulais voir depuis longtemps dans MSTest était les tests unitaires paramétrés (PUT). J'étais ravi d'entendre que Intellitest would be capable of creating said tests. J'ai commencé à jouer avec Intellitest, cependant, et je pense que ma définition de PUT est différente de celle de Microsoft.Tests unitaires paramétrés avec Visual Studio 2015 Intellitest

Quand je pense "PUT", je pense TestCases in NUnit, ou Theories in xUnit. Les gens beaucoup plus intelligents que moi seem to use the same terminology. Quelqu'un peut-il me dire si Intellitest est réellement capable de créer un PUT de la même manière que NUnit ou xUnit, ou est-ce un problème d'un terme surchargé qui signifie une chose dans Intellitest, et un autre pour la plupart des autres frameworks de test? Merci.

Répondre

5

Un test d'unité paramétré généré par Intellitest est et non le même qu'un PUT généralement trouvé dans d'autres frameworks de test.

Dans le monde MSTest/Intellitest, les PUT sont utilisés pour intelligently generate other unit tests.

Pour exécuter un test à plusieurs reprises avec différents ensembles de données dans MSTest, nous avons encore besoin de lutter avec Data-Driven Unit Tests ou utiliser MSTestHacks comme suggéré dans How to RowTest with MSTest?.

1

Un test unitaire paramétré (PUT) est la généralisation directe d'un test unitaire à l'aide de paramètres. Un PUT fait des déclarations sur le comportement du code pour un ensemble complet de valeurs d'entrée possibles, au lieu d'une seule valeur d'entrée exemplaire. Dans cette mesure, il est similaire aux liens que vous fournissez. Là où cela diffère, c'est quand il s'agit de générer les données pour alimenter le test unitaire paramétré - IntelliTest peut générer automatiquement des données d'entrée pour le PUT. Je vous demande s'il vous plaît se référer à ce qui suit: http://blogs.msdn.com/b/visualstudioalm/archive/2015/07/05/intellitest-one-test-to-rule-them-all.aspx pour le contexte.

0

As of June 2016, cette fonctionnalité a été ajoutée à « MSTest V2 », qui peut être installé via NuGet en ajoutant les paquets MSTest.TestAdapter et MSTest.TestFramework:

Install-Package MSTest.TestAdapter 
Install-Package MSTest.TestFramework 

Sachez que ce sont différents de la version du cadre de test qui est livré avec Visual Studio 2017. Pour les utiliser, vous devrez probablement supprimer la (les) référence (s) à Microsoft.VisualStudio.QualityTools.UnitTestFramework.

Une fois ceux-ci sont installés, vous pouvez simplement utiliser le RowDataAttribute, comme le montre l'exemple suivant:

[TestMethod] 
[DataRow(1, 1, 2)] 
[DataRow(3, 3, 6)] 
[DataRow(9, -4, 5)] 
public void AdditionTest(int first, int second, int expected) { 
    var sum = first+second; 
    Assert.AreEqual<int>(expected, sum); 
} 

De toute évidence, vous n'êtes pas limité à int ici. Vous pouvez également utiliser string, float, bool ou tout autre primitive value type.

Ceci est identique à l'implémentation précédemment disponible pour Windows Store App projects, si vous connaissez cette implémentation.