用于数据驱动单元测试的嵌套XML
我的目标是在每个单元测试迭代中都有“嵌套”数据。我想这样做,这样我就可以调用一组数据,以及一系列操作(由字符串描述),然后在测试中解释和执行这些操作。我目前通过测试资源管理器在VS2013中正确使用非嵌套数据(例如,无数据/操作子项组)运行测试 例如,我的数据可以是:用于数据驱动单元测试的嵌套XML,xml,unit-testing,visual-studio-2013,data-driven-tests,Xml,Unit Testing,Visual Studio 2013,Data Driven Tests,我的目标是在每个单元测试迭代中都有“嵌套”数据。我想这样做,这样我就可以调用一组数据,以及一系列操作(由字符串描述),然后在测试中解释和执行这些操作。我目前通过测试资源管理器在VS2013中正确使用非嵌套数据(例如,无数据/操作子项组)运行测试 例如,我的数据可以是: <TestData> <Iteration> <Data> <LoginName>admin</LoginName> <Pass
<TestData>
<Iteration>
<Data>
<LoginName>admin</LoginName>
<Password>admin</Password>
</Data>
<Actions>
<Action>EnterText_LoginName</Action>
<Action>EnterText_Password</Action>
<Action>ClickButton_Login</Action>
</Actions>
</Iteration>
</TestData>
GetChildRows似乎是正确的方法,但我无法在返回的对象中看到与我的XML元素相似的任何数据-我只得到1个DataRow
对象,该对象的ItemArray
值为3(0,{},0)。如何检索操作元素列表,以便访问文本:
- “输入文本\登录名”
- “输入文本\u密码”
- “单击按钮\u登录”
- 我也遇到了你同样的问题,我就是这样解决的
这是我的XML
<?xml version="1.0" encoding="utf-8" ?>
<root>
<parent>
<field1>1234</field1>
<field2>4700</field2>
<child>
<name>john</name>
<age>2</age>
</child>
<child>
<name>jack</name>
<age>3</age>
</child>
</parent>
</root>
<?xml version="1.0" encoding="utf-8" ?>
<root>
<parent>
<field1>1234</field1>
<field2>4700</field2>
<child>
<name>john</name>
<age>2</age>
</child>
<child>
<name>jack</name>
<age>3</age>
</child>
</parent>
</root>
[TestMethod]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
"App_Data\\TestsInput\\Controllers\\Identity\\Tests\\Test.xml",
"parent",
DataAccessMethod.Sequential)]
public void MyFirstTest()
{
//get a normal node XML
int field1= Convert.ToInt32(TestContext.DataRow["field1"]);
//get the list of fields
DataRow[] datas = TestContext.DataRow.GetChildRows("parent_child");
foreach (DataRow data in datas)
{
string name= data["name"].ToString();
int age= Convert.ToInt32(data["age"]);
//example
Assert.IsTrue(age==2);
}
}