Je me souviens d'un article from Jeff Brown, le développeur principal de Gallio/MbUnit, qui parle des usines dynamiques et statiques dans MbUnit v3. Il y a un bel exemple qui décrit comment créer usines de test statiques et dynamiques. D'autre part, les usines de données de test sont plus faciles à créer et offrent une alternative intéressante aux tests pilotés par les données [Row]
, qui n'acceptent que les valeurs primitives en entrée (une limitation de C# pour les paramètres passés à un attribut)
Voici un exemple pour MbUnit v3. La fabrique de données est ici une propriété du banc de test, mais il peut s'agir d'une méthode ou d'un champ, qui peut être situé dans un type imbriqué ou dans un type externe. Ceci est en effet une caractéristique très souple :)
[TestFixture]
public class MyTestFixture
{
private IEnumerable<object[]> ProvideTestData
{
get
{
yield return new object[] { new Foo(123), "Hello", Color.Blue};
yield return new object[] { new Foo(456), "Big", Color.Red};
yield return new object[] { new Foo(789), "World", Color.Green};
}
}
[Test, Factory("ProvideTestData")]
public void MyTestMethod(Foo foo, string text, Color color)
{
// Test logic here...
}
}
Merci, mais cela ne répond pas à la question de CombinatorialTest avec UsingFactories. Comment peut-on produire une multiplication cartésienne de {new Foo (123), new Foo (456), nouveau Foo (789)} x {"Hello", "Big", "World"} x {Color.Blue, Color.Red , Color.Green} dans MbUnit v3 ?. En v2 c'est facile - chaque paramètre de MyTestMethod est attribué avec UsingFactories. Dans MbUnit v3, il y a l'attribut Column, mais les valeurs doivent être connues au moment de la compilation, contrairement à UsingFactories. – mark
Merci, j'ai trouvé cela très utile même si cela ne répond pas à la question. – dkantowitz