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);
}
}
}