UsingFactories替代在MbUnit的V3(UsingFactories alternat

2019-07-31 12:25发布

我试图找出如何写在MbUnit的V3组合测试。 所有在网络上的示例代码指MbUnit的V2,这意味着使用3个属性:

  • CombinatorialTest
  • UsingFactories

在MbUnit的V3没有UsingFactories属性(和工厂属性语义差异很大,并且不再需要CombinatorialTest属性)。 所以,我怎么能知道哪些工厂方法绑定到该参数在特定的单元测试方法?

谢谢。

Answer 1:

我发现,与杰夫的帮助下,该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



Answer 2:

我记得一个来自杰夫·布朗的文章 ,的首席开发公堂/ 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...   
   }
}


Answer 3:

我没有看到类似的东西[UsingFactories]在MbUnit的的测试 ,但你可以使用[Factory] + 这个组合数学库来达到同样的效果。

试着问在MbUnit的用户群对这个确认。



文章来源: UsingFactories alternative in MbUnit v3
标签: mbunit