我正在开发一个需要XHTML的应用程序。
<documents>
<document>
<span class="style1"> This is some text1 </span>
<span class="style2"> This is some text2 </span>
<span class="style3"> This is some text2 </span>
</document>
</documents>
class属性的值基本上是样式。这些样式映射到数据库中的某些操作。当我的应用程序看到这些样式时,这些操作告诉我的应用程序如何处理这些span标记。
Style1 - 删除 - NULL
Style2 - Keep - NULL
Style3 - 替换 - H1
该应用程序具有以下输出: -
<documents>
<document>
This is some text1
<span class="style2"> This is some text2 </span>
<h1> This is some text2 </h1>
</document>
</documents>
以下是我想到的有点伪代码: -
foreach(XmlNode documentNode in documentNodes)
{
XmlNode[] spanNodes =documentNode.SelectNodes("//span") ;
foreach(XmlNode spanNode in spanNodes)
{
if(spanNode .Attributes["class"]!=null && !string.IsNullOrEmpty(spanNode .Attributes["class"].value)))
{
string styleName = spanNode.Attributes["class"].value;
string styleActionMapping = GetActionMappingForStyle (styleName);
switch (styleActionMapping)
{
case StyleActionMapping.Remove
RemoveSpanNode(spanNode);
break;
case StyleActionMapping.ReplaceWith
ReplaceSpanNode(spanNode);
break;
case StyleActionMapping.Keep
break;
}
}
}
}
输入可能比我上面显示的要复杂得多,应用程序可能非常容易出错。 S,我想使用单元测试,以便当对应用程序进行任何更改时,我可以运行单元测试并确信它们仍在工作。所以,我希望有一个这样的简单表格,预先填充数据: -
我希望用我的应用程序代码测试这个单元使用Visual studio.NET 2010测试数据。任何人都可以为我提供方向。
对不起,这个很长的问题。我是单元测试的新手,我只想尽可能清楚。随意问的问题。
答案 0 :(得分:1)
我假设帖子的最后部分真的是问题:如何在.NET中编写数据驱动的测试。
我喜欢将简单文件嵌入到单元测试程序集中(构建操作:嵌入式资源)。然后,您可以使用Assembly.GetManifestResourceStream
来获取数据。有时我会有一个输入文件和一个输出文件;在其他情况下,我可以有一个包含多个输入和输出的文件。对于XML来说肯定是可行的:
<tests>
<test id="FooBar">
<input>
...
</input>
<expected-output>
...
</expected-output>
</test>
<tests>
然后你可以只加载一个文档,然后获取单个测试的输入和输出;如有必要,将其转换为独立文档,然后将其传递给生产代码,最后比较输出。不可否认,比较输出可以是棘手的 - 它将取决于像空白压缩这样的东西......但它通常是可行的。