我需要编写一个由包含数据集合的数据文件驱动的单元测试。由于显而易见的原因,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"];
它抛出一个测试时间错误"列'displayColumnNames'不属于表testRecord。".
我可以很好地使用简单的"平面"xml数据文件,但这对我没有帮助。我是在尝试VS2008(即MSTest)无法处理的事情,还是在做一些愚蠢的事情?
您可以使用
TestContext.DataRow.GetChildRows("testRecord_displayColumnNames")
以访问嵌套的节点。可以修改关系名称"testRecord_displayColumnNames"以深入xml层次结构。HTH