NUnit a une fonctionnalité appelée Values, comme ci-dessous:
[Test]
public void MyTest(
[Values(1,2,3)] int x,
[Values("A","B")] string s)
{
// ...
}
Cela signifie que la méthode de test s'exécutera six fois:
MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
Nous utilisons MSTest maintenant, mais y a-t-il un équivalent pour que je puisse exécuter le même test avec plusieurs paramètres?
[TestMethod]
public void Mytest()
{
// ...
}
c#
unit-testing
nunit
mstest
vs-unit-testing-framework
La lumière
la source
la source
Réponses:
Il n'est malheureusement pas pris en charge dans les anciennes versions de MSTest. Apparemment, il existe un modèle d'extensibilité et vous pouvez l'implémenter vous-même . Une autre option serait d'utiliser des tests basés sur les données .
Mon opinion personnelle serait de s'en tenir à NUnit cependant ...
Depuis Visual Studio 2012, mise à jour 1, MSTest a une fonctionnalité similaire. Voir la réponse de McAden .
la source
EDIT 4 : On dirait que cela est terminé dans MSTest V2 17 juin 2016: https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest- v2 /
Réponse originale :
Il y a environ une semaine, dans Visual Studio 2012 Update 1, quelque chose de similaire est désormais possible:
EDIT : Il semble que cela n'est disponible que dans le projet de test unitaire pour WinRT / Metro . Décevant
EDIT 2 : Voici les métadonnées trouvées à l'aide de «Go To Definition» dans Visual Studio:
EDIT 3 : Ce problème a été soulevé dans les forums UserVoice de Visual Studio. La dernière mise à jour déclare:
https://visualstudio.uservoice.com/forums/330519-team-services/suggestions/3865310-allow-use-of-datatestmethod-datarow-in-all-unit
la source
Cette fonctionnalité est actuellement en pré-version et fonctionne avec Visual Studio 2015.
Par exemple:
la source
Pas exactement les mêmes que les attributs de NUnit
Value
(ouTestCase
), mais MSTest a l'DataSource
attribut, qui vous permet de faire une chose similaire.Vous pouvez le connecter à une base de données ou à un fichier XML - ce n'est pas aussi simple que la fonctionnalité de NUnit, mais il fait le travail.
la source
MSTest a un attribut puissant appelé DataSource . En utilisant cela, vous pouvez effectuer des tests basés sur les données comme vous l'avez demandé. Vous pouvez avoir vos données de test au format XML, CSV ou dans une base de données. Voici quelques liens qui vous guideront
la source
C'est très simple à mettre en œuvre - vous devez utiliser la
TestContext
propriété etTestPropertyAttribute
.Exemple
ÉDITER:
J'ai préparé quelques méthodes d'extension pour simplifier l'accès à la
TestContext
propriété et agir comme si nous avions plusieurs cas de test. Voir l'exemple de traitement des propriétés de test simples ici:et exemple avec la création d'objets de test complexes:
Jetez un œil aux méthodes d' extension et à l'ensemble d' exemples pour plus de détails.
la source
Il existe, bien sûr, une autre façon de faire cela qui n'a pas été discutée dans ce fil, c'est-à-dire par héritage de la classe contenant TestMethod. Dans l'exemple suivant, une seule TestMethod a été définie mais deux cas de test ont été réalisés.
Dans Visual Studio 2012, il crée deux tests dans TestExplorer:
DemoTest_A12_B4.test
la source
MSTest ne prend pas en charge cette fonctionnalité, mais vous pouvez implémenter votre propre attribut pour y parvenir.
Jetez un œil à Activation des tests paramétrés dans MSTest à l'aide de PostSharp .
la source
Je n'ai pas pu faire fonctionner The
DataRowAttribute
dans Visual Studio 2015, et c'est ce que j'ai fini avec:La vraie solution ici est d'utiliser simplement NUnit (sauf si vous êtes coincé dans MSTest comme je le suis dans ce cas particulier).
la source