42 votes

Comment RowTest avec MSTest?

Je sais que MSTest ne prend pas en charge RowTest et les tests similaires.

Que font MSTests utilisateurs? Comment est-il possible de vivre sans RowTest soutien?

J'ai vu DataDriven fonctionnalités de test, mais cela semble trop lourd. Existe-t-il un correctif ou un outil tiers qui me permet d'effectuer RowTest tests similaires dans MSTest ?

38voto

Tormod Points 2280
[TestMethod]
Test1Row1
{
    Test1(1,4,5);
}

[TestMethod]
Test1Row2
{
    Test1(1,7,8);
}

private Test1(int i, int j, int k)
{
   //all code and assertions in here
}

12voto

gerleim Points 314

8voto

Thwaitesy Points 112

Je sais que c'est une réponse tardive mais j'espère que ça aide les autres à l'extérieur.

J'ai cherché partout une solution élégante et fini par écrire un 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. N'a jamais manqué un battement.

https://github.com/Thwaitesy/MSTestHacks

1) Installer le NuGet package.

2) Hériter de votre classe de test à partir de TestBase

public class UnitTest1 : TestBase
{ }

3) Créer une Propriété, un Champ ou une Méthode, qui renvoie IEnumerable

public class UnitTest1 : TestBase
{
    private IEnumerable<int> Stuff
    {
        get
        {
            //This could do anything, get a dynamic list from anywhere....
            return new List<int> { 1, 2, 3 };
        }
    }
}

4) Ajouter le MSTest source de données de l'attribut à votre méthode de test, pointant vers l'interface IEnumerable nom ci-dessus. Ce doit être pleinement qualifié.

[DataSource("Namespace.UnitTest1.Stuff")]
public void TestMethod1()
{
    var number = this.TestContext.GetRuntimeDataSourceObject<int>();

    Assert.IsNotNull(number);
}

Résultat final: 3 itérations tout comme la normale de la source de données :)

using Microsoft.VisualStudio.TestTools.UnitTesting;
using MSTestHacks;

namespace Namespace
{
    public class UnitTest1 : TestBase
    {
        private IEnumerable<int> Stuff
        {
            get
            {
                //This could do anything, get a dynamic list from anywhere....
                return new List<int> { 1, 2, 3 };
            }
        }

        [DataSource("Namespace.UnitTest1.Stuff")]
        public void TestMethod1()
        {
            var number = this.TestContext.GetRuntimeDataSourceObject<int>();

            Assert.IsNotNull(number);
        }
    }
}

6voto

allen Points 2819

Nous avons ajouté une prise en charge pour DataRow dans VS2012 Update1. Voir ce blog pour une brève introduction

Modifier: vous souhaitez souligner que cette fonctionnalité est actuellement limitée aux applications du Windows Store.

4voto

Aseem Bansal Points 553

Vous pouvez également avoir la possibilité de tester les lignes en écrivant une petite extension de mstest, comme indiqué ici.

http://blogs.msdn.com/b/vstsqualitytools/archive/2009/09/04/extending-the-visual-studio-unit-test-type-part-2.aspx

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