﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-大话人生-随笔分类-单元测试Nunit</title><link>http://www.cnitblog.com/stomic/category/8930.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 15 Aug 2013 18:25:51 GMT</lastBuildDate><pubDate>Thu, 15 Aug 2013 18:25:51 GMT</pubDate><ttl>60</ttl><item><title>（转） NUnit结合Selenium进行自动化测试2 </title><link>http://www.cnitblog.com/stomic/archive/2013/08/14/88383.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Wed, 14 Aug 2013 02:45:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2013/08/14/88383.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/88383.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2013/08/14/88383.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/88383.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/88383.html</trackback:ping><description><![CDATA[<div>&nbsp;上一篇《Nunit结合Selenium的自动化测试1》中，讲了NUnit在Visual Studio 2010中如何进行自动化测试。今天我们来学习一下如何用NUint做批量运行测试脚本，和最终的测试结果收集。 <div><br /> </div> <div>&nbsp; &nbsp; &nbsp;在讲解之前，我们先下载一个小工具<span style="font-family:'Times New Roman'; text-indent:-18pt">nunit-results-1.1-bin，它是用来解析</span>TestResult.xml 文件的，该文件是在NUint运行完成后所收集的一个测试结果。下载地址如下：http://launchpad.net/nunit-results， 下载成功后，请把它解压到你的项目中，我这里是把它存放在C:\SeleniumTesting\NUnitReport\packages（也就是我项 目的实际地址）</div> <div><br /> </div> <div>&nbsp; &nbsp; &nbsp;这里如何在将NUint、Selenium加入到Visual Studio 2010中，请参考《Selenium &#8211;  WebDriver在Visual Studio2010中的环境安装》和《Nunit结合Selenium的自动化测试1》，这里我们不在做讲解。</div> <div><br /> </div> <div>&nbsp; &nbsp; &nbsp;我们现在来讨论的事如何同时使用Nunit和<span style="font-family:'Times New Roman'; text-indent:-24px">nunit-results-1.1-bin，我们在项目中新建一个Lunchbat文件，它是用来调用</span>Nunit和<span style="font-family:'Times New Roman'; text-indent:-24px">nunit-results-1.1-bin。</span></div> <div>&nbsp;@C:\SeleniumTesting\NUnitReport\packages\NUnit.2.6.2\NUnit-2.6.2\bin\nunit-console.exe  "C:\SeleniumTesting\NUnitReport\NUnitReport\bin\Debug\NUnitReport.exe"</div> <div><br /> </div> <span>@C:\SeleniumTesting\NUnitReport\packages\nunit-results-1.1-bin\nunit-results.exe  "C:\SeleniumTesting\NUnitReport\NUnitReport\bin\Debug\TestResult.xml"  "C:\SeleniumTesting\NUnitReport\Result"</span> <div><br /> </div> <div>---这里有两行命令：</div> <div>&nbsp; &nbsp;  &nbsp;第一行命令的第一个参数C:\SeleniumTesting\NUnitReport\packages\NUnit.2.6.2\NUnit- 2.6.2\bin\nunit-console.exe&nbsp;---表示你所要运行NUnit的工具地址，这里我们是使用nunit- console.exe，而不是nunit.exe（注：如果使用nunit.exe，则bat文件的第二行内容将不被执行）</div> <div>&nbsp; &nbsp;  &nbsp;第一行命令的第二个参数C:\SeleniumTesting\NUnitReport\NUnitReport\bin\Debug \NUnitReport.exe"----表示NUnit所要执行项目文件，我这里由于新建的是&#8220;控制台应用程序&#8221;所以编译成功后会产生一个.exe文 件，如果你新建的项目是class文件的，则会产生一个.dll。</div> <div><br /> </div> <div>&nbsp; &nbsp; &nbsp;第二行命令的第一个参数C:\SeleniumTesting\NUnitReport\packages\nunit-results-1.1-bin\nunit-results.exe---表示调用nunit-results-1.1-bin工具</div> <div>&nbsp; &nbsp;  &nbsp;第二行命令的第二个参数"C:\SeleniumTesting\NUnitReport\NUnitReport\bin\Debug \TestResult.xml"---表示nunit-results-1.1-bin工具所要解析的文件地址，这里的TestResult.xml就 是NUint运行时所生成的</div> <div>&nbsp; &nbsp; &nbsp;第二行命令的第三个参数"C:\SeleniumTesting\NUnitReport\Result"---表示解析成功后的文件所存放的地址</div> <div><br /> </div> <div>&nbsp; &nbsp; &nbsp;使用方法如下：</div> <div>&nbsp; &nbsp; &nbsp;1. 在&#8220;开始&#8221;--&gt;"运行"--&gt;输入cmd</div> <div>&nbsp; &nbsp; &nbsp;2. 把LaunchTest.bat文件拖到cmd窗口中，如下图</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://img.my.csdn.net/uploads/201302/02/1359809930_5039.jpg" /></div> <div>&nbsp; &nbsp; &nbsp;3. 按下回车后，开始执行脚本，如下图所示</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://img.my.csdn.net/uploads/201302/02/1359809946_5272.jpg" /></div> <div>&nbsp; &nbsp; &nbsp;4. 下面是运行成功后截图</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://img.my.csdn.net/uploads/201302/02/1359809963_6790.jpg" /></div> <div>&nbsp; &nbsp; &nbsp;5. 打开<a>C:\SeleniumTesting\NUnitReport\Result文件夹，里面就会新增两个html的文件，分别是：index.html和NUnitReport.html</a>，打开<a>NUnitReport.html</a>，如下图：</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://img.my.csdn.net/uploads/201302/02/1359809979_2429.jpg" /></div> <div>&nbsp; &nbsp; &nbsp;6. 当运行结果失败的时候，会有报表页面会产生乱码，我们可以用文本编辑器打开<a>NUnitReport.html</a>页面，添加如下代码：</div> &nbsp; &nbsp; &nbsp;&lt;head&gt;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /&gt;&nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/head&gt;<br /> <div>&nbsp; &nbsp; &nbsp;</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;到此为此，我们讲完如何用NUnit做批量运行测试脚本，和最终的测试结果收集。是不是很简单呀。</div> <div><br /> </div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下面附上这个示例项目的代码，经供参考。如有不妥之处，请予以指正。<br /> &nbsp;&nbsp;&nbsp;&nbsp; http://download.csdn.net/detail/xhhuang1618/5049124</div><img src ="http://www.cnitblog.com/stomic/aggbug/88383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2013-08-14 10:45 <a href="http://www.cnitblog.com/stomic/archive/2013/08/14/88383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）NUnit——从零开始</title><link>http://www.cnitblog.com/stomic/archive/2013/08/09/88346.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Fri, 09 Aug 2013 09:54:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2013/08/09/88346.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/88346.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2013/08/09/88346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/88346.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/88346.html</trackback:ping><description><![CDATA[<div>既然是从零开始，就先介绍一下NUnit （http://www.nunit.org）：一个.NET 框架下的单元测试框架，提供了类似于 JUnit的功能，也是 .NET 框架下开发者应用最广泛的单元测试框架之一（其他的还包括 CSUnit 等等）。  <p>&nbsp;&nbsp;&nbsp; 它的基本原理是通过 .NET 的反射机制，利用代码中的元数据（Attribute）来辨识到底有哪些单元测试。单元测试（Unit  Test）是测试驱动开发（Test-Driven  Development,TDD）很重要的一环，而TDD又是敏捷开发方法（比如极限编程--eXtreme  Programming）的重要组成部分&#8230;&#8230; 总之，单元测试很重要就对了。 ^_^ （有关TDD、XP的详细介绍在博客园的很多blog上就有，当然  google 上就更多了） </p> <p>例子开始： </p> <p>&nbsp;&nbsp;&nbsp; 1、下载、安装 NUnit（最新版可能是 2.2.0） </p> <p>&nbsp;&nbsp;&nbsp; 2、很重要的步骤：测试一下 NUnit 是否安装成功。 </p> <p>&nbsp;&nbsp;&nbsp; 方法：打开 NUnit，File--Open--选 NUnit 安装目录下的bin目录中的  nunit.tests.dll。这时NUnit 主窗口左部的树型列表中会出现很多个测试的名字，然后点 Run 按钮，接着测试就开始运行了，直到  NUnit  主窗口左部的树型列表中所有的测试前面都变成绿色，那就是成功了。（失败的测试会有红色的提示，没有运行的测试会有黄色的提示。在这一步中，有可能  Console Runner 那个测试集合会出现问题。万一出现问题，重启一下 NUnit 再 Run，一般都是没问题的） </p> <p>&nbsp;&nbsp;&nbsp; 3、怎么在开发中使用 NUnit 框架？ <br />&nbsp;&nbsp;&nbsp; 1）打开VS.NET 2003，新建一个 C# 的 Console  项目，在项目的 References 添加 nunit.framework（References 在 Solution Explorer  窗口中，右键，Add Reference...） </p> <p>&nbsp;&nbsp;&nbsp; 2）随便写一个类</p> <pre style="border-right: black 1px solid; padding-right: 4px; border-top: black 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: black 1px solid; padding-top: 4px; border-bottom: black 1px solid; background-color: #ededed"><img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /><span style="color: #000000">public class Account </span><span style="color: #008000">//</span><span style="color: #008000"> 银行帐户类 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />private </span><span style="color: #0000ff">float</span><span style="color: #000000"> balance; </span><span style="color: #008000">//</span><span style="color: #008000"> 账户的余额 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />public </span><span style="color: #0000ff">void</span><span style="color: #000000"> Deposit(</span><span style="color: #0000ff">float</span><span style="color: #000000"> amount) </span><span style="color: #008000">//</span><span style="color: #008000"> 存钱 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />balance</span><span style="color: #000000">+=</span><span style="color: #000000">amount; <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />public </span><span style="color: #0000ff">void</span><span style="color: #000000"> Withdraw(</span><span style="color: #0000ff">float</span><span style="color: #000000"> amount) </span><span style="color: #008000">//</span><span style="color: #008000">取钱 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />balance</span><span style="color: #000000">-=</span><span style="color: #000000">amount; <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />public </span><span style="color: #0000ff">void</span><span style="color: #000000"> TransferFunds(Account destination, </span><span style="color: #0000ff">float</span><span style="color: #000000"> amount) </span><span style="color: #008000">//</span><span style="color: #008000"> 转账 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />destination.Deposit(amount); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />Withdraw(amount); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />public </span><span style="color: #0000ff">float</span><span style="color: #000000"> Balance <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />get{ </span><span style="color: #0000ff">return</span><span style="color: #000000"> balance; } <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />public static </span><span style="color: #0000ff">void</span><span style="color: #000000"> Main(string[] args) <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />Account source </span><span style="color: #000000">=</span> <span style="color: #0000ff">new</span><span style="color: #000000"> Account(); </span><span style="color: #008000">//</span><span style="color: #008000"> 新建个账户 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">source.Deposit(</span><span style="color: #000000">200</span><span style="color: #000000">.00F); </span><span style="color: #008000">//</span><span style="color: #008000"> 存200 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">Account destination </span><span style="color: #000000">=</span> <span style="color: #0000ff">new</span><span style="color: #000000"> Account(); </span><span style="color: #008000">//</span><span style="color: #008000"> 又建了一个 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">destination.Deposit(</span><span style="color: #000000">150</span><span style="color: #000000">.00F); </span><span style="color: #008000">//</span><span style="color: #008000"> 存150 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">source.TransferFunds(destination, </span><span style="color: #000000">100</span><span style="color: #000000">.00F); </span><span style="color: #008000">//</span><span style="color: #008000"> 第一个账户转给第二个100 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">} <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} </span> </pre> <p>&nbsp;&nbsp;&nbsp; 这个类很简单，编译通过，运行，一切ok。 </p> <p>&nbsp;&nbsp;&nbsp; 3）在同一个项目中，增加一个用来测试 Account 类中的方法的测试类（里面的几个Attribute是最关键的）</p> <pre style="border-right: black 1px solid; padding-right: 4px; border-top: black 1px solid; padding-left: 4px; padding-bottom: 4px; border-left: black 1px solid; padding-top: 4px; border-bottom: black 1px solid; background-color: #ededed"><img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /><span style="color: #000000">using NUnit.Framework; </span><span style="color: #008000">//</span><span style="color: #008000"> 千万别忘了这一行 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />[TestFixture] </span><span style="color: #008000">//</span><span style="color: #008000"> 这个Attribute说明 AccountTest 类中包含有测试 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">public class AccountTest <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />[Test] </span><span style="color: #008000">//</span><span style="color: #008000"> 这个Attribute说明了 TestTransferFunds() 方法就是用来做测试的 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />//</span><span style="color: #008000"> 一般测试方法的名字就是在被测试方法名前加上Test </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">public </span><span style="color: #0000ff">void</span><span style="color: #000000"> TestTransferFunds() <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />{ <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000"> 准备工作 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">Account source </span><span style="color: #000000">=</span> <span style="color: #0000ff">new</span><span style="color: #000000"> Account(); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />source.Deposit(</span><span style="color: #000000">200</span><span style="color: #000000">.00F); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />Account destination </span><span style="color: #000000">=</span> <span style="color: #0000ff">new</span><span style="color: #000000"> Account(); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />destination.Deposit(</span><span style="color: #000000">150</span><span style="color: #000000">.00F); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />source.TransferFunds(destination, </span><span style="color: #000000">100</span><span style="color: #000000">.00F); </span><span style="color: #008000">//</span><span style="color: #008000"> 转账 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #008000">//</span><span style="color: #008000"> 利用 Nunit.Framework 中的 Assert 类看看转账以后两个账户的余额是否正确 </span><span style="color: #008000"> <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" /></span><span style="color: #000000">Assert.AreEqual(</span><span style="color: #000000">250</span><span style="color: #000000">.00F, destination.Balance); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />Assert.AreEqual(</span><span style="color: #000000">100</span><span style="color: #000000">.00F, source.Balance); <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} <img src="http://pub.chinaunix.net/uploadfile/200912/20091210093314890.gif" alt="" align="top" />} </span> </pre> <p>&nbsp;&nbsp;&nbsp;  然后编译一下，生成一个 exe 文件（如果要生成 DLL 的话，更改一下这个这个项目的 Output Type属性，改成 Class  Library就可以了。这个改动还是在Solution Explorer 窗口中，项目名上 右键--属性。 对于这个例子，生成DLL的话就不需要  Main() 方法了）。 </p> <p>&nbsp;&nbsp;&nbsp; 4）打开NUnit，File--Open，找到刚才编译生成的 exe。然后 Run，满眼可爱的绿色，就说明测试都成功了^_^。 </p> <p>&nbsp;&nbsp;&nbsp; 如果想看看测试失败的样子，可以把 Assert.AreEqual() 里面的值改一下&#8230;&#8230; </p> <p>&nbsp;&nbsp;&nbsp; 例子中只用到了 Test Fixture 和 Test 这两个Attribute,其他更多的用法在 NUnit 文档中写得十分清楚，文档中也有些更好的例子&#8230;&#8230; </p> <p>自动化的单元测试有什么用？ 答：省时省力。当一个系统需要测试的类/方法 成千上万时，手工的测试方法（用控制台打印出信息等等）的效率会比较低。 </p> <p>&nbsp;&nbsp;&nbsp; <strong>总结：</strong>NUnit 很好的利用了反射机制，单元测试十分方便。但是对于复杂的对象，写出低耦合的测试代码可能有一定难度</p></div><img src ="http://www.cnitblog.com/stomic/aggbug/88346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2013-08-09 17:54 <a href="http://www.cnitblog.com/stomic/archive/2013/08/09/88346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>（转）NUnit2.0详细使用方法 </title><link>http://www.cnitblog.com/stomic/archive/2013/08/07/88313.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Wed, 07 Aug 2013 07:22:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2013/08/07/88313.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/88313.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2013/08/07/88313.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/88313.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/88313.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 注：NUnit中文文档可以参看我的另一个站点:http://www.36sign.com/nunit  前一段时间,有人问我在.NET里如何进行TDD开发.这个问题促使我想对NUnit做一个详细的介绍.因为我们大家都知道NUnit是在.NET进行TDD的利器. 如果你已经知道很多关于NUnit的应用,请指出我的不对之处和提出一些建议，使本文更加完善.如果你对NUnit还不是很了解的话,我建议你还是...&nbsp;&nbsp;<a href='http://www.cnitblog.com/stomic/archive/2013/08/07/88313.html'>阅读全文</a><img src ="http://www.cnitblog.com/stomic/aggbug/88313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2013-08-07 15:22 <a href="http://www.cnitblog.com/stomic/archive/2013/08/07/88313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>