首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UsingFactories alternative in MbUnit v3

UsingFactories alternative in MbUnit v3
EN

Stack Overflow用户
提问于 2009-08-06 09:43:46
回答 3查看 1.5K关注 0票数 4

我想弄清楚如何用MbUnit v3编写组合测试。web上的所有示例代码都引用了MbUnit v2,这意味着使用3个属性:

  • CombinatorialTest
  • 工厂
  • UsingFactories

在MbUnit v3中,不存在UsingFactories属性(而且工厂属性语义有很大不同,不再需要CombinatorialTest属性)。那么,我如何知道哪个工厂方法绑定到特定单元测试方法中的哪个参数?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2009-08-06 13:06:27

我记得一个杰夫·布朗的文章Gallio/MbUnit的主要开发人员,它讨论MbUnit v3中的动态和静态工厂。有一个很好的例子描述了如何创建静态和动态测试工厂

另一方面,测试数据工厂更容易创建,并为[Row]-based数据驱动测试提供了一个有趣的替代方案,后者只接受原语值作为输入(传递给属性的参数的C#限制)。

下面是MbUnit v3的一个示例。数据工厂在这里是测试夹具的属性,但它可以是方法或字段,可以位于嵌套类型或外部类型中。这确实是一个非常灵活的特性:)

代码语言:javascript
运行
复制
[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...   
   }
}
票数 4
EN

Stack Overflow用户

发布于 2009-08-24 15:32:08

杰夫的帮助下,我发现可以简单地使用Factory属性而不是UsingFactories,如下所示:

代码语言:javascript
运行
复制
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生成的值的笛卡尔乘法上。

票数 4
EN

Stack Overflow用户

发布于 2009-08-08 18:52:26

我在MbUnit试验中没有看到类似于MbUnit试验的任何东西,但是您可以使用[Factory] + 这个组合类库来实现相同的结果。

试着向MbUnit用户组询问这方面的确认信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1237933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档