我试图找出如何写在MbUnit的V3组合测试。 所有在网络上的示例代码指MbUnit的V2,这意味着使用3个属性:
- CombinatorialTest
- 厂
- UsingFactories
在MbUnit的V3没有UsingFactories属性(和工厂属性语义差异很大,并且不再需要CombinatorialTest属性)。 所以,我怎么能知道哪些工厂方法绑定到该参数在特定的单元测试方法?
谢谢。
我试图找出如何写在MbUnit的V3组合测试。 所有在网络上的示例代码指MbUnit的V2,这意味着使用3个属性:
在MbUnit的V3没有UsingFactories属性(和工厂属性语义差异很大,并且不再需要CombinatorialTest属性)。 所以,我怎么能知道哪些工厂方法绑定到该参数在特定的单元测试方法?
谢谢。
我发现,与杰夫的帮助下,该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
。
我记得一个来自杰夫·布朗的文章 ,的首席开发公堂/ 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...
}
}
我没有看到类似的东西[UsingFactories]
在MbUnit的的测试 ,但你可以使用[Factory]
+ 这个组合数学库来达到同样的效果。
试着问在MbUnit的用户群对这个确认。