为操作XHTML的应用程序设计单元测试用例

时间:2010-09-25 04:44:29

标签: c# visual-studio unit-testing

我正在开发一个需要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,我想使用单元测试,以便当对应用程序进行任何更改时,我可以运行单元测试并确信它们仍在工作。所以,我希望有一个这样的简单表格,预先填充数据: -


Id - 场景 - 输入 - 期望输出

我希望用我的应用程序代码测试这个单元使用Visual studio.NET 2010测试数据。任何人都可以为我提供方向。

对不起,这个很长的问题。我是单元测试的新手,我只想尽可能清楚。随意问的问题。

1 个答案:

答案 0 :(得分:1)

我假设帖子的最后部分真的是问题:如何在.NET中编写数据驱动的测试。

我喜欢将简单文件嵌入到单元测试程序集中(构建操作:嵌入式资源)。然后,您可以使用Assembly.GetManifestResourceStream来获取数据。有时我会有一个输入文件和一个输出文件;在其他情况下,我可以有一个包含多个输入和输出的文件。对于XML来说肯定是可行的:

<tests>
  <test id="FooBar">
     <input>
       ...
     </input>
     <expected-output>
       ...
     </expected-output>
  </test>
<tests>

然后你可以只加载一个文档,然后获取单个测试的输入和输出;如有必要,将其转换为独立文档,然后将其传递给生产代码,最后比较输出。不可否认,比较输出可以是棘手的 - 它将取决于像空白压缩这样的东西......但它通常是可行的。