如何在 MbUnit 中传递 XML 中的多个数据集

发布于 2024-11-09 08:36:52 字数 555 浏览 4 评论 0原文

假设我有一个接受可变数量 DataRows 的代码模块:

Public sub Process(Dt As DataTable)
End Sub

我想将一个或多个测试 DataRows 传递到我的 MbUnit 测试模块:

测试 1 strong>:

DataRow 1: Green, 23
DataRow 2: Green, 24

测试 2

DataRow 1: Green, 23
DataRow 2: Green, 24
DataRow 3: Blue, 44
DataRow 4: Red, 55

如何在 MbUnit 中设置包含这些测试的 XML 数据文件?

问题2:

假设我想传递有关测试数据的元数据?例如“颜色名称”或“距离”。如何将此元数据添加到 XML 文件中?

谢谢,

艾德

Suppose I have a code module which accepts a variable number of DataRows:

Public sub Process(Dt As DataTable)
End Sub

I want to pass one or more test DataRows to my MbUnit test module:

Test 1:

DataRow 1: Green, 23
DataRow 2: Green, 24

Test 2:

DataRow 1: Green, 23
DataRow 2: Green, 24
DataRow 3: Blue, 44
DataRow 4: Red, 55

How would I setup an XML data file with these tests in MbUnit?

Question 2:

Suppose I want to pass meta data about the test data? For example "Color Name" or "Distance". How would I add this meta data to the XML file?

Thanks,

Ed

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

沫离伤花 2024-11-16 08:36:52

Gallio Wiki 中有一些文档解释了如何使用 XML 数据源作为测试参数以及如何将它们绑定元数据。但不幸的是,内置的XML数据源属性并不是那么灵活。

我想最好的解决方案是创建您的自己的数据工厂。也许是这样的:

[TestFixture]
public class MyFixture
{
  [Test, Factory("GetSampleDataTables")]
  public void MyTest(DataTable dataTable)
  {
     var foo = new Foo();
     foo.Process(dataTable);
     // Make assertions...
  }

  public static IEnumerable<object> GetSampleDataTables()
  {
    foreach (...) // Read your XML data file...
    {
      var sampleDataTable = new DataTable();
      // Populate your sample data table from XML...
      yield return sampleDataTable;
    }
  }
}

There is some documentation in the Gallio Wiki which explains how to use an XML data source for your test parameters and how to bind them with metadata. But unfortunately, the built-in XML data source attribute is not that much flexible.

I guess that the best solution is to create your own data factory. Something like this maybe:

[TestFixture]
public class MyFixture
{
  [Test, Factory("GetSampleDataTables")]
  public void MyTest(DataTable dataTable)
  {
     var foo = new Foo();
     foo.Process(dataTable);
     // Make assertions...
  }

  public static IEnumerable<object> GetSampleDataTables()
  {
    foreach (...) // Read your XML data file...
    {
      var sampleDataTable = new DataTable();
      // Populate your sample data table from XML...
      yield return sampleDataTable;
    }
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文