使用嵌套节点的XML数据驱动单元测试

时间:2018-04-13 06:57:36

标签: c# unit-testing data-driven-tests

过去几个小时我无法在互联网上找到任何东西。情况如下:我想测试我编写的解析器,为此我有编写数据驱动单元测试的愿望。我的XML看起来如下:

<Test>
   <ParseTest>
      <Case>
         <uri>somestring</uri>
         <key>somestring</key>
         <value>somestring</value>
      </Case>
      <Case>
         <uri>somestring</uri>
         <key>somestring</key>
         <value>somestring</value>
      </Case>
   </ParseTest>
</Test>

Test是我全班的根节点。 ParseTest应该是每个方法的根,所以我想访问每个运行一个案例节点及其子节点

我的测试代码是:

[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",@"PATH\name.xml","ParseTest",DataAccessMethod.Seqential)]
public void ParseTest()
{
   //Arrange       
      m_testContext.DataRow["uri"].ToString();
   //Act
   //Assert
}

问题是,框架找不到正确的子节点。找到该文件正确。我通过VS中的“运行测试”运行测试。

1 个答案:

答案 0 :(得分:1)

this example之后,额外的ParseTest是多余的(或嵌套的Case标记)。据我所知,测试框架将加载名为ParseTest的所有标记,并为每个标记运行一个测试(假设您将"ParseTest"作为表名传递)。不知道如何从测试中访问数据我猜想XML应该像

那样
<Test>
   <ParseTest>
      <uri>somestring</uri>
      <key>somestring</key>
      <value>somestring</value>
   </ParseTest>
   <ParseTest>
      <uri>somestring</uri>
      <key>somestring</key>
      <value>somestring</value>
   </ParseTest>
</Test>