Je trouve la TestCase
fonctionnalité de NUnit assez utile comme moyen rapide de spécifier les paramètres de test sans avoir besoin d'une méthode distincte pour chaque test. Y a-t-il quelque chose de similaire dans MSTest?
[TestFixture]
public class StringFormatUtilsTest
{
[TestCase("tttt", "")]
[TestCase("", "")]
[TestCase("t3a4b5", "345")]
[TestCase("3&5*", "35")]
[TestCase("123", "123")]
public void StripNonNumeric(string before, string expected)
{
string actual = FormatUtils.StripNonNumeric(before);
Assert.AreEqual(expected, actual);
}
}
DataRow()
, voir: blogs.msdn.microsoft.com/devops/2016/06/17/…Réponses:
Microsoft a récemment annoncé "MSTest V2" (voir article de blog ). Cela vous permet d'utiliser de manière cohérente (bureau, UWP, ...) l'
DataRow
attribut -attribute!Encore une fois, l'Explorateur de tests de Visual Studio Express ne reconnaît malheureusement pas ces tests. Mais au moins les versions VS «complètes» prennent désormais en charge cette fonctionnalité!
Pour l'utiliser, installez simplement les packages NuGet MSTest.TestFramework et MSTest.TestAdapter (tous deux en version préliminaire à partir de maintenant).
Réponse plus ancienne:
Si vous n'êtes pas obligé de vous en tenir à MSTest et que vous l'utilisez simplement pour pouvoir exécuter les tests via l'Explorateur de tests
car vous n'avez qu'une édition de Visual Studio Express, alors cela pourrait être une solution pour vous:Il existe l'extension VsTestAdapter VSIX pour pouvoir exécuter des tests NUnit via l'Explorateur de tests. Malheureusement, les utilisateurs de VS Express ne peuvent pas installer d'extensions ... Mais heureusement, le VsTestAdapter est également livré avec un NuGet-Package !
Donc, si vous êtes un utilisateur VS Express, installez simplement le package NuGet VsTestAdapter et profitez de l'exécution de vos tests / cas de test NUnit via l'Explorateur de tests!Malheureusement, la déclaration susmentionnée n'est pas vraie. S'il est parfaitement possible d'installer le package via une édition Express, cela ne sert à rien, car il ne peut pas utiliser l'Explorateur de tests. Il y a déjà eu une note latérale sur une ancienne version du TestAdapter, qui a été supprimée de la page de description de la 2.0.0 :
la source
Je sais que c'est une réponse tardive, mais j'espère que cela aidera les autres.
J'ai cherché partout une solution élégante et j'ai fini par en écrire une moi-même. Nous l'utilisons dans plus de 20 projets avec des milliers de tests unitaires et des centaines de milliers d'itérations. Jamais une seule fois manqué un battement.
https://github.com/Thwaitesy/MSTestHacks
1) Installez le package NuGet .
2) Héritez votre classe de test de TestBase
3) Créez une propriété, un champ ou une méthode qui renvoie IEnumerable
4) Ajoutez l'attribut MSTest DataSource à votre méthode de test, en pointant vers le nom IEnumerable ci-dessus. Cela doit être pleinement qualifié.
Résultat final: 3 itérations comme la DataSource normale :)
la source
Je sais que c'est une autre réponse tardive, mais dans mon équipe qui est verrouillée dans l'utilisation du framework MS Test, nous avons développé une technique qui repose uniquement sur les types anonymes pour contenir un tableau de données de test, et LINQ pour parcourir et tester chaque ligne. Il ne nécessite aucune classe ou framework supplémentaire et a tendance à être assez facile à lire et à comprendre. Il est également beaucoup plus facile à mettre en œuvre que les tests basés sur les données utilisant des fichiers externes ou une base de données connectée.
Par exemple, disons que vous avez une méthode d'extension comme celle-ci:
Vous pouvez utiliser un tableau de types anonymes combiné à LINQ pour écrire un test comme celui-ci:
Lors de l'utilisation de cette technique, il est utile d'utiliser un message formaté qui inclut les données d'entrée dans l'Assert pour vous aider à identifier la ligne qui entraîne l'échec du test.
J'ai blogué sur cette solution avec plus d'informations et de détails sur AgileCoder.net .
la source
Khlr a donné de bonnes explications détaillées et apparemment, cette approche a commencé à fonctionner dans VS2015 Express for Desktop. J'ai essayé de laisser le commentaire, mais mon manque de réputation ne m'a pas permis de le faire.
Permettez-moi de copier la solution ici:
Pour l'utiliser, installez simplement les packages NuGet MSTest.TestFramework et MSTest.TestAdapter .
Un problème est
Donc, veuillez supprimer Microsoft.VisualStudio.QualityTools.UnitTestFramework des références du projet.
Vous êtes les bienvenus pour modifier la réponse originale et supprimer celle-ci.
la source
MSTest a l'attribut DataSource, qui vous permettra de lui alimenter une table de base de données, csv, xml, etc. Je l'ai utilisé et cela fonctionne bien. Je ne connais pas de moyen de placer les données juste au-dessus en tant qu'attributs comme dans votre question, mais il est très facile de configurer les sources de données externes et les fichiers peuvent être inclus dans le projet. Je l'ai fait fonctionner une heure après mes débuts et je ne suis pas un expert en tests automatisés.
https://msdn.microsoft.com/en-us/library/ms182527.aspx?f=255&MSPPError=-2147217396 propose un didacticiel complet basé sur l'entrée de la base de données.
http://www.rhyous.com/2015/05/11/row-tests-or-paramerterized-tests-mstest-xml/ a un tutoriel basé sur l'entrée de fichier XML.
la source