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

C# 为操作XHTML的应用程序设计单元测试用例,c#,visual-studio,unit-testing,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>

我正在开发一个需要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>
输入可能比我上面展示的要复杂得多,应用程序可能非常容易出现bug。S、 我想使用单元测试,以便在对应用程序进行任何更改时,我可以运行单元测试并确信它们仍在工作。因此,我希望有一个这样的简单表,其中包含预填充的数据:-


Id-场景-输入-预期输出 我想使用Visual studio.NET 2010使用这个单元测试数据来测试我的应用程序代码。有谁能给我指路吗


很抱歉问了这么长的问题。我是单元测试的新手,我只是想尽可能的清楚。请随意提问

我假设这篇文章的最后一部分实际上是一个问题:如何在.NET中编写数据驱动的测试

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

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

...
...

然后您可以加载单个文档,然后获取单个测试的输入和输出;如有必要,将其转换为独立文档,然后将其传递给生产代码,最后比较输出。不可否认,比较输出可能很棘手-这将取决于诸如空白压缩之类的事情。。。但是它通常是可行的。

我假设这篇文章的最后一部分是真正的问题:如何在.NET中编写数据驱动的测试

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

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

...
...

然后您可以加载单个文档,然后获取单个测试的输入和输出;如有必要,将其转换为独立文档,然后将其传递给生产代码,最后比较输出。不可否认,比较输出可能很棘手-这将取决于诸如空白压缩之类的事情。。。但这通常是可行的。

我希望有“当有人回答你的问题时,在这个号码上发短信”功能。我每10分钟检查一次此页。:-)我希望有“当有人回答你的问题时,这个号码上的短信”功能。我每10分钟检查一次此页。:-)+乔恩。当然另外,当我等待答案时,我阅读了最后使用数据库表的内容。这只是一个基本问题,为什么您更喜欢使用嵌入式资源文件而不是数据库表?另外,如果另一个应用程序具有类似的单元测试需求,那么如果我们将输入和预期输出作为字符串放在数据库表中,并让单元测试类库使用相同的字符串,这不是更好吗?或者这是一种过分的做法吗?@ydobonmai:为什么我要将我的单元测试绑定到数据库?让测试尽可能独立是一个值得追求的目标。它还使版本控制更容易。通常,单元测试非常特定于一个应用程序-两个应用程序具有相同的预期输入/输出是不常见的。使用数据库来测试数据库应用程序并非完全不合理(尽管这些可能是集成测试而不是单元测试),但即使这样,我也可能将测试数据嵌入到程序集中,然后填充数据库。我只想说,对于“空白压缩”在te XDocument中,您可以使用XDocumentObject.ToString(SaveOptions.DisableFormatting)的重载来设置其他不需要的格式。@ydobonmai:没错。或者,您可以要求LinqtoXML将它们重新格式化为规范格式。当然另外,当我等待答案时,我阅读了最后使用数据库表的内容。这只是一个基本问题,为什么您更喜欢使用嵌入式资源文件而不是数据库表?另外,如果另一个应用程序具有类似的单元测试需求,那么如果我们将输入和预期输出作为字符串放在数据库表中,并让单元测试类库使用相同的字符串,这不是更好吗?或者这是一种过分的做法吗?@ydobonmai:为什么我要将我的单元测试绑定到数据库?让测试尽可能独立是一个值得追求的目标。它还使版本控制更容易。通常,单元测试非常特定于一个应用程序-两个应用程序具有相同的预期输入/输出是不常见的。使用数据库来测试数据库应用程序并非完全不合理(尽管这些可能是集成测试而不是单元测试),但即使这样,我也可能将测试数据嵌入到程序集中,然后填充数据库。我只想说,对于“空白压缩”在te XDocument中,您可以使用XDocumentObject.ToString(SaveOptions.DisableFormatting)的重载来设置其他不需要的格式。@ydobonmai:没错。或者,您可以要求linqtoxml将它们重新格式化为规范形式。
<tests>
  <test id="FooBar">
     <input>
       ...
     </input>
     <expected-output>
       ...
     </expected-output>
  </test>
<tests>