162 votes

Comment exécuter une méthode de test avec plusieurs paramètres dans MSTest?

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 sera exécutée 6 fois:

 MyTest(1, "A")
MyTest(1, "B")
MyTest(2, "A")
MyTest(2, "B")
MyTest(3, "A")
MyTest(3, "B")
 

Nous utilisons MSTest maintenant, existe-t-il un équivalent pour que je puisse exécuter le même test avec plusieurs paramètres?

 [TestMethod]
public void Mytest()
{
    // ...
}
 

188voto

McAden Points 7657

Il y a environ une semaine, dans Visual Studio 2012 Update 1, quelque chose de similaire est maintenant possible:

 [DataTestMethod]
[DataRow(12,3,4)]
[DataRow(12,2,6)]
[DataRow(12,4,3)]
public void DivideTest(int n, int d, int q)
{
  Assert.AreEqual( q, n / d );
}
 

EDIT : Il semble que cela n’est disponible que dans le projet de test unitaire pour WinRT / Metro. Bummer

EDIT 2 : Voici les métadonnées trouvées avec "Aller à la définition" dans Visual Studio:

 #region Assembly Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll, v11.0.0.0
// C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ExtensionSDKs\MSTestFramework\11.0\References\CommonConfiguration\neutral\Microsoft.VisualStudio.TestPlatform.UnitTestFramework.dll
#endregion

using System;

namespace Microsoft.VisualStudio.TestPlatform.UnitTestFramework
{
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    public class DataTestMethodAttribute : TestMethodAttribute
    {
        public DataTestMethodAttribute();

        public override TestResult[] Execute(ITestMethod testMethod);
    }
}
 

49voto

jeroenh Points 12777

Il n'est malheureusement pas pris en charge dans MSTest. Apparemment il y a un modèle d'extensibilité et vous pouvez la mettre en œuvre vous-même. Une autre option serait d'utiliser des données piloté par les tests.

Mon avis personnel serait de simplement coller avec NUnit...

EDIT: Comme de Visual Studio 2012 update 1, MSTest une fonctionnalité similaire. Voir @McAden la réponse ci-dessous.

13voto

jimmy_keen Points 14831

Puisque personne n'a mentionné - pas exactement la même chose que les attributs Value (ou TestCase ) de NUnit, mais MSTest possède l'attribut DataSource , ce qui vous permet de faire la même chose. Vous pouvez le connecter à une base de données ou à un fichier XML - pas aussi simple que la fonctionnalité de NUnit, mais fait le travail.

7voto

Pritam Karmakar Points 951

MSTest a un puissant attribut appelé la source de données, à l'aide de ce que vous pouvez effectuer piloté par les données de test que vous 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 pourront vous guider

http://visualstudiomagazine.com/articles/2009/09/15/unit-testing-with-vsts2008-part-3.aspx http://msdn.microsoft.com/en-us/library/ms182527.aspx
http://msdn.microsoft.com/en-us/library/ms243192.aspx

Espérons que cela vous aidera.

4voto

Massimiliano Peluso Points 13357

MsTest ne prend pas en charge cette fonctionnalité. Vous pouvez implémenter votre propre attribut pour y parvenir. regardez ci-dessous:

http://blog.drorhelper.com/2011/09/enabling-parameterized-tests-in-mstest.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X