我想弄清楚如何用MbUnit v3编写组合测试。web上的所有示例代码都引用了MbUnit v2,这意味着使用3个属性:
在MbUnit v3中,不存在UsingFactories属性(而且工厂属性语义有很大不同,不再需要CombinatorialTest属性)。那么,我如何知道哪个工厂方法绑定到特定单元测试方法中的哪个参数?
谢谢。
发布于 2009-08-06 13:06:27
我记得一个杰夫·布朗的文章,Gallio/MbUnit的主要开发人员,它讨论MbUnit v3中的动态和静态工厂。有一个很好的例子描述了如何创建静态和动态测试工厂。
另一方面,测试数据工厂更容易创建,并为[Row]-based数据驱动测试提供了一个有趣的替代方案,后者只接受原语值作为输入(传递给属性的参数的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...
}
}发布于 2009-08-24 15:32:08
在杰夫的帮助下,我发现可以简单地使用Factory属性而不是UsingFactories,如下所示:
public static IEnumerable<int> XFactory()
{
...
}
public static IEnumerable<string> YFactory()
{
...
}
[Test]
public void ATestMethod([Factory("XFactory")] int x, [Factory("YFactory")] string y)
{
...
}测试ATestMethod将运行在由XFactory生成的值和由YFactory生成的值的笛卡尔乘法上。
发布于 2009-08-08 18:52:26
我在MbUnit试验中没有看到类似于MbUnit试验的任何东西,但是您可以使用[Factory] + 这个组合类库来实现相同的结果。
试着向MbUnit用户组询问这方面的确认信息。
https://stackoverflow.com/questions/1237933
复制相似问题