Я помню статью от Джеффа Брауна , ведущего разработчика Gallio / MbUnit , в которой говорится о динамических и статических фабриках в MbUnit v3. Есть хороший пример, который описывает, как создать статических и динамических тестовых фабрик .
С другой стороны, фабрики тестовых данных проще создавать, и они представляют собой интересную альтернативу основанным на [Row]
тестам на основе данных, которые принимают в качестве входных данных только примитивные значения (ограничение C # для параметров, передаваемых в атрибут)
Вот пример для MbUnit v3. Фабрика данных здесь является свойством тестового прибора, но это может быть метод или поле, которые могут быть расположены во вложенном типе или во внешнем типе. Это действительно очень гибкая функция :)
[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...
}
}