使用嵌套xml数据文件的数据驱动测试

时间:2012-08-30 16:17:09

标签: c# .net xml mstest data-driven-tests

我需要编写一个由包含数据集合的数据文件驱动的单元测试。由于显而易见的原因,csv文件不合适,但XML表明了自己。但是我似乎无法让它发挥作用。

这是数据文件的一个片段(只显示了一个测试记录):

<?xml version="1.0" encoding="utf-8" ?>
<testData>
  <testRecord>
    <displayColumnNames>
      <name>Include</name>
      <name>SampleInt1</name>
      <name>SampleInt2</name>
      <name>SampleInt3</name>
      <name>SampleInt4</name>
      <name>SampleInt5</name>
    </displayColumnNames>
    <valueColIDs>
      <valueColID>1</valueColID>
      <valueColID>3</valueColID>
      <valueColID>5</valueColID>
    </valueColIDs>
    <calculations>
      <calculation colID ="2"><![CDATA[500 * [:5]]></calculation>
      <calculation colID ="5"><![CDATA[500 * [:2]]></calculation>
    </calculations>
    <expected>
      <item>5</item>
    </expected>
  </testRecord>
</testData>

基本上我希望能够从每个测试记录中读取大量数据集合(例如“displayColumnNames”)并迭代我的测试中的值。每个此类集合中的元素数量将因测试用例而异。

然而,直接的绊脚石是我的代码行:

var displayColumnNames = TestContext.DataRow["displayColumnNames"];

抛出一个测试时错误“Column'displayColumnNames'不属于表testRecord。”。

我可以使用简单的'flat'xml数据文件很好地工作,但这对我没有帮助。我是在尝试VS2008(即MSTest)无法处理的事情,还是我在做一些愚蠢的事情?

1 个答案:

答案 0 :(得分:1)

您可以使用

TestContext.DataRow.GetChildRows("testRecord_displayColumnNames")

访问嵌套节点。可以修改关系名称 - “testRecord_displayColumnNames”以深入到xml层次结构中。 HTH