<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Strobaek Blog &#187; UnitTest</title>
	<atom:link href="http://blog.strobaek.org/category/unittest/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.strobaek.org</link>
	<description>Karsten Strøbæk&#039;s blog about current projects, code and life in general</description>
	<lastBuildDate>Fri, 30 Dec 2011 18:33:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>More on TFS and xUnit</title>
		<link>http://blog.strobaek.org/2011/10/18/more-on-tfs-and-xunit/</link>
		<comments>http://blog.strobaek.org/2011/10/18/more-on-tfs-and-xunit/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 07:30:30 +0000</pubDate>
		<dc:creator>strobaek</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[UnitTest]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[xUnit]]></category>

		<guid isPermaLink="false">http://blog.strobaek.org/?p=727</guid>
		<description><![CDATA[In my previous post on TFS and xUnit I tried to describe how to get the unit testing framework xUnit to work with TFS. I have got a couple of comments about not being able to get things to work. Unfortunately I have not had time to dive deep into why this may be so. It [...]]]></description>
			<content:encoded><![CDATA[<p>In my previous <a href="http://blog.strobaek.org/2011/10/03/howto-team-foundation-server-and-xunit/">post </a>on TFS and xUnit I tried to describe how to get the unit testing framework <a href="http://xunit.codeplex.com/">xUnit</a> to work with TFS.</p>
<p>I have got a couple of comments about not being able to get things to work. Unfortunately I have not had time to dive deep into why this may be so. It may well be because the description is flawed, for which I apologize.</p>
<p>A few observations:</p>
<ul>
<li>Concerning <a href="http://nunit4teambuild.codeplex.com/">NUnitTFS</a>: apart from different arguments, it also seems like the functionality is different. Using the newest version I get the following error:<a href="http://blog.strobaek.org/wp-content/uploads/xunit2-01a.jpg"><img class="aligncenter size-medium wp-image-733" title="xunit2-01a" src="http://blog.strobaek.org/wp-content/uploads/xunit2-01a-300x95.jpg" alt="" width="300" height="95" /></a>
<p>However, using a previous (alpha) version all works as expected:</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit2-03.jpg"><img class="aligncenter size-medium wp-image-731" title="xunit2-03" src="http://blog.strobaek.org/wp-content/uploads/xunit2-03-300x93.jpg" alt="" width="300" height="93" /></a></li>
<li>If you forget to define the endpoints in the <em>NUnitTfs.exe.config</em>-file you will get an error similar to the following:<a href="http://blog.strobaek.org/wp-content/uploads/xunit2-02.jpg"><img class="aligncenter size-medium wp-image-730" title="xunit2-02" src="http://blog.strobaek.org/wp-content/uploads/xunit2-02-300x80.jpg" alt="" width="300" height="80" /></a></li>
<li>Download the <a title="TFS Template XAML-file" href="http://blog.strobaek.org/wp-content/uploads/XUnitBuildProcessTemplate.xaml">xaml </a>and <a title="NUnitTFS" href="http://blog.strobaek.org/wp-content/uploads/NUnitTfs.zip">NUnitTFS </a>I have used and try it out.</li>
</ul>
<p>&nbsp;</p>
<p>Using the <em>InvokeProcess</em> component (from the Toolbar) it should be possible to integrate any external tool into the workflow.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.strobaek.org/2011/10/18/more-on-tfs-and-xunit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HowTo: Team Foundation Server and xUnit</title>
		<link>http://blog.strobaek.org/2011/10/03/howto-team-foundation-server-and-xunit/</link>
		<comments>http://blog.strobaek.org/2011/10/03/howto-team-foundation-server-and-xunit/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 10:29:39 +0000</pubDate>
		<dc:creator>strobaek</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[UnitTest]]></category>
		<category><![CDATA[TFS]]></category>
		<category><![CDATA[xUnit]]></category>

		<guid isPermaLink="false">http://blog.strobaek.org/?p=678</guid>
		<description><![CDATA[For quite some time I have been doing TDD and Continuous Integration (CI), both in my private projects as well as my professional ones. My preferred unit testing framework is xUnit and I recently had to set this up with Team Foundation Server (TFS) to do CI. It turned out this was not a trivial task. [...]]]></description>
			<content:encoded><![CDATA[<p>For quite some time I have been doing TDD and Continuous Integration (CI), both in my private projects as well as my professional ones. My preferred unit testing framework is xUnit and I recently had to set this up with Team Foundation Server (TFS) to do CI. It turned out this was not a trivial task. One think was to get TFS to run the tests, another was to get TFS Reporting to work and show the test results. This blog post will show the different steps I took. I hope it will be an inspiration to others and help them avoid some of the issues and fustrations I ran into. Any comments or feedback will be greatly appreciated.</p>
<p>First step is to install TFS 2010. The following will describe how to install it on Windows Server 2008 and SQL Server 2008. However, the steps are the same for Windows Server 2008R2 and SQL Server 2008 R2.</p>
<p>I will not go into great details of how to install the server products. There are already great guides available on the web, so please drop me a mail og reach me on twitter if you require assistance with this part of the process.</p>
<p>Install Windows Server 2008 (Enterprise) on a server and apply Service Pack 2 (SP2).</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit01.jpg"><img class="aligncenter size-medium wp-image-681" title="xunit01" src="http://blog.strobaek.org/wp-content/uploads/xunit01-300x226.jpg" alt="" width="300" height="226" /></a></p>
<p>Create a User named, e.g. TFS and add this user to the Administrators group.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit02.jpg"><img class="aligncenter size-medium wp-image-682" title="xunit02" src="http://blog.strobaek.org/wp-content/uploads/xunit02-300x241.jpg" alt="" width="300" height="241" /></a></p>
<p>Install SQL Server 2008 (Enterprise Edition) with all components. I’ve also selected to install the <em>Business Intelligence Development Studio</em>, which will allow me to create TFS Reports.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit03.jpg"><img class="aligncenter size-medium wp-image-683" title="xunit03" src="http://blog.strobaek.org/wp-content/uploads/xunit03-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>Install Reporting Services in Native mode, but select the option of NOT configuring the Reporting Services now. Do not install it in SharePoint Integrated mode.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit04.jpg"><img class="aligncenter size-medium wp-image-684" title="xunit04" src="http://blog.strobaek.org/wp-content/uploads/xunit04-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>Add the TFS user as Login to the SQL Server just installed.</p>
<p>Install WSS (Windows Sharepoint Services) 3.0 and Service Pack 2. Do not run the <em>Configuration Wizard</em> at the end.</p>
<p>At this point you should be able to see the default SharePoint site at <a href="http://localhost">http://localhost</a>.</p>
<p>Open the <em>SQL Server Reporting Services Configuration Tool</em> and configure the Reporting Services now.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit05.jpg"><img class="aligncenter size-medium wp-image-685" title="xunit05" src="http://blog.strobaek.org/wp-content/uploads/xunit05-238x300.jpg" alt="" width="238" height="300" /></a></p>
<p>The tool will take you through the configuration step by step and will allow you to specify User, Create database etc. When asked for user credentials specify the User created earlier.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit06.jpg"><img class="aligncenter size-medium wp-image-686" title="xunit06" src="http://blog.strobaek.org/wp-content/uploads/xunit06-209x300.jpg" alt="" width="209" height="300" /></a></p>
<p>When configuring the <em>Database </em>keep the default setting to <em>Native Mode </em>when asked for <em>Report Server Mode.</em></p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit07.jpg"><img class="aligncenter size-medium wp-image-687" title="xunit07" src="http://blog.strobaek.org/wp-content/uploads/xunit07-300x112.jpg" alt="" width="300" height="112" /></a>When the configuration has completed it should be possible to see the Reporting Service Portal and Web Service, e.g.  on <a href="http://localhost/Reports">http://localhost/Reports</a> and <a href="http://localhost/ReportServer">http://localhost/ReportServer</a>.</p>
<p>Now it is time to install TFS. Initiate the installation and select the features you wish to install, most likely all but the Team Foundation Server Proxy.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit08.jpg"><img class="aligncenter size-medium wp-image-688" title="xunit08" src="http://blog.strobaek.org/wp-content/uploads/xunit08-300x148.jpg" alt="" width="300" height="148" /></a></p>
<p>You properly need to restart the server during the installation – after all this is Microsoft – but otherwise the installation should run smoothly.</p>
<p>Once done, press the <em>Configure </em>buton, to launch the Configuration Tool. Select the configuration appropriate to your needs. I selected the <em>Standard </em>configuration for this lab.</p>
<p>When asked for the Service Account, enter the user you created previously.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit09.jpg"><img class="aligncenter size-medium wp-image-689" title="xunit09" src="http://blog.strobaek.org/wp-content/uploads/xunit09-300x37.jpg" alt="" width="300" height="37" /></a></p>
<p>If you are not able to pass all the verification checks, just correct then and re-run the verification. Once all is green, you should be able to complete the configuration.</p>
<p>If you want to read more about TFS, check out the blog posts by <a href="http://www.richard-banks.org/2010/07/how-to-versioning-builds-with-tfs-2010.html" target="_blank">Richard Banks</a> and <a href="http://www.ewaldhofman.nl/post/2010/04/20/Customize-Team-Build-2010-e28093-Part-1-Introduction.aspx" target="_blank">Ewald Hofman</a>.</p>
<p>You now have a running TFS, but we are far from finished. To finish what we set out to do we now have to create and modify a build configuration.</p>
<p>A disclaimer: the following example will have some hardcoded values. The correct way to do things would be to create a <em>custom action</em>, put it in TFS and refer this, but this I will leave<br />
for another post.</p>
<p>In order to run our unit tests using xUnit and publish the results, we need to copy to items to the TFS server: <a href="http://xunit.codeplex.com/" target="_blank">xUnit </a>and <a href="http://nunit4teambuild.codeplex.com/" target="_blank">NUnitTFS</a>.</p>
<p>I placed then in C:\Tools\. Do not put any spaces in the folder names; this will make your life easier later on.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit10b.jpg"><img class="aligncenter size-full wp-image-722" title="xunit10b" src="http://blog.strobaek.org/wp-content/uploads/xunit10b.jpg" alt="" width="254" height="57" /></a></p>
<p>A little tweaking is most likely required of the configuration of NUnit. You need to ensure that the client endpoints are set correctly in the config-file. By default they point to http://teamfoundation.</p>
<p>First step is to create a copy of the <em>DefaultTemplate.xaml</em> file, rename it to something – I called mine <em>xUnitTemplate.xaml</em> – and add it to TFS.</p>
<p>Open the new template in Visual Studio.</p>
<p>We need two arguments, one for the path to the xUnit console and one for the path to the NUnitTFS.exe.</p>
<p>Select <em>Arguments </em>and click <em>Create Argument.</em></p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit11.jpg"><img class="aligncenter size-medium wp-image-691" title="xunit11" src="http://blog.strobaek.org/wp-content/uploads/xunit11-300x69.jpg" alt="" width="300" height="69" /></a></p>
<p>Create the two arguments: <em>xUnit</em> and <em>TFSPublish</em>.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit12.jpg"><img class="aligncenter size-medium wp-image-692" title="xunit12" src="http://blog.strobaek.org/wp-content/uploads/xunit12-300x18.jpg" alt="" width="300" height="18" /></a></p>
<p>Click the <em>Arguments </em>to close the list.</p>
<p>Select <em>Variables </em>and create one called <em>XUnitResult</em>. This will contain the output from one of the new processes we create.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit13.jpg"><img class="aligncenter size-medium wp-image-693" title="xunit13" src="http://blog.strobaek.org/wp-content/uploads/xunit13-300x33.jpg" alt="" width="300" height="33" /></a></p>
<p>Note the <em>Variable Type </em>and <em>Scope</em>.</p>
<p>Now scroll down into the processes and locate the <em>If Statement</em> called <em>If Not Disable Tests</em> and the <em>Sequence </em>called <em>Run Tests</em>.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit14.jpg"><img class="aligncenter size-medium wp-image-694" title="xunit14" src="http://blog.strobaek.org/wp-content/uploads/xunit14-300x71.jpg" alt="" width="300" height="71" /></a></p>
<p>We want to delete the content of the <em>Run Tests</em> sequence and enter our own. Easiest way to do this is right click on <em>Run Tests</em> and select <em>Delete.</em> This will leave you with something like the following</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit15.jpg"><img class="aligncenter size-medium wp-image-695" title="xunit15" src="http://blog.strobaek.org/wp-content/uploads/xunit15-300x141.jpg" alt="" width="300" height="141" /></a></p>
<p>Now from the Toolbox find the Sequence (located under Control Flow) and drop one on the <em>Then </em>box. Rename it to <em>Run Tests</em>.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit16.jpg"><img class="aligncenter size-medium wp-image-696" title="xunit16" src="http://blog.strobaek.org/wp-content/uploads/xunit16-300x138.jpg" alt="" width="300" height="138" /></a></p>
<p>Add an Invoke Process to the Sequence and name it <em>Invoke xUnit Console</em>.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit17.jpg"><img class="aligncenter size-full wp-image-697" title="xunit17" src="http://blog.strobaek.org/wp-content/uploads/xunit17.jpg" alt="" width="239" height="279" /></a></p>
<p>The reason for the red exclamation marks is that we need to configure the new control. Open the properties and set the following:</p>
<ul>
<li>Arguments: &#8220;xUnit.Test.dll /silent /nunit results.xml&#8221; (including quotes)</li>
<li>FileName: xUnit</li>
<li>Result: XUnitResult</li>
<li>WorkingDirectory: outputDirectory</li>
</ul>
<p>As you can see we here have a hard coded value, namely the name of the assembly containing the unit tests. “It can be easily seen” as we used to say at University, when the math proof was too easy, so I will leave this as a small home assignment to you, my dear reader <img src='http://blog.strobaek.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>You also want to add two activities to output the build messages and build errors (if any).</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit18.jpg"><img class="aligncenter size-medium wp-image-698" title="xunit18" src="http://blog.strobaek.org/wp-content/uploads/xunit18-300x143.jpg" alt="" width="300" height="143" /></a></p>
<p>In the properties, set the <em>Message</em> to <em>stdOutput</em> and <em>errOutput</em> respectively.</p>
<p>We are almost done. Add a second <em>Invoke Process</em> under the newly created and name it e.g. <em>Publish xUnit Results</em>.</p>
<p>Set the <em>Argument to the following:</em></p>
<p>String.Format(&#8220;-n {0} -t {1} -p &#8221;"{2}&#8221;" -f {3} -b &#8220;&#8221;{4}&#8221;" &#8220;,<br />
&#8220;results.xml&#8221;,<br />
BuildDetail.TeamProject,<br />
BuildSettings.PlatformConfigurations(0).Platform,<br />
BuildSettings.PlatformConfigurations(0).Configuration,<br />
BuildDetail.BuildNumber)</p>
<p>And the <em>FileName </em>to <em>TFSPublish</em>  and <em>WorkingDirectory </em>to <em>outputDirectory</em> and lastly add two output handlers as above.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit19.jpg"><img class="aligncenter size-full wp-image-699" title="xunit19" src="http://blog.strobaek.org/wp-content/uploads/xunit19.jpg" alt="" width="246" height="215" /></a></p>
<p>Save the template and check it in.</p>
<p>Next step is to create a new build definition that uses the new template.</p>
<p>Open the Team Explorer, right click on <em>Builds</em> and select <em>New Build Definition</em>.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit20.jpg"><img class="aligncenter size-medium wp-image-700" title="xunit20" src="http://blog.strobaek.org/wp-content/uploads/xunit20-300x210.jpg" alt="" width="300" height="210" /></a></p>
<p>Set the name to something meaningful</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit21.jpg"><img class="aligncenter size-medium wp-image-701" title="xunit21" src="http://blog.strobaek.org/wp-content/uploads/xunit21-300x64.jpg" alt="" width="300" height="64" /></a></p>
<p>And the Trigger to <em>Continuous Integration</em></p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit22.jpg"><img class="aligncenter size-medium wp-image-702" title="xunit22" src="http://blog.strobaek.org/wp-content/uploads/xunit22-300x65.jpg" alt="" width="300" height="65" /></a></p>
<p>In Workspace, ensure that the folders you wish to include are active. Here we only got one.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit23.jpg"><img class="aligncenter size-medium wp-image-703" title="xunit23" src="http://blog.strobaek.org/wp-content/uploads/xunit23-300x50.jpg" alt="" width="300" height="50" /></a></p>
<p>Under Build Defaults set the <em>Build controller</em> and the <em>drop  folder</em>. For this test I have just shared a drive on my TFS server.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit24.jpg"><img class="aligncenter size-medium wp-image-704" title="xunit24" src="http://blog.strobaek.org/wp-content/uploads/xunit24-300x125.jpg" alt="" width="300" height="125" /></a></p>
<p>Under Process we need to set the <em>Build process template</em>. Click on <em>Show Details</em> to expand the panel.</p>
<p>Click on <em>New</em> to  set the new template we have created earlier.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit25.jpg"><img class="aligncenter size-medium wp-image-705" title="xunit25" src="http://blog.strobaek.org/wp-content/uploads/xunit25-300x63.jpg" alt="" width="300" height="63" /></a></p>
<p>Select the <em>Select an  existing XAML file</em> and click on <em>Browse…</em></p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit26.jpg"><img class="aligncenter size-medium wp-image-706" title="xunit26" src="http://blog.strobaek.org/wp-content/uploads/xunit26-277x300.jpg" alt="" width="277" height="300" /></a></p>
<p>Select the template we just created and press <em>OK</em>.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit27.jpg"><img class="aligncenter size-medium wp-image-707" title="xunit27" src="http://blog.strobaek.org/wp-content/uploads/xunit27-300x152.jpg" alt="" width="300" height="152" /></a></p>
<p>Press <em>OK</em> again to  get back to the initial screen (still under Process).</p>
<p>Under <em>4. Misc</em> you  should see the two arguments we created. Enter the values as shown below. <em></em></p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit28a.jpg"><img class="aligncenter size-medium wp-image-723" title="xunit28a" src="http://blog.strobaek.org/wp-content/uploads/xunit28a-300x38.jpg" alt="" width="300" height="38" /></a></p>
<p>If you are still seeing a yellow exclamation mark, it may be because you have to set the <em>Configurations to build</em> under <em>1. Required | Items to Build</em>.</p>
<p>To test that this is actually working, create a solution and  add a class library to hold your unit tests. Remember to name the library  xUnit.Test (or rather ensure that the assembly is named xUnit.Test.dll).</p>
<p>When you check in the test, the new build should commence.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit29.jpg"><img class="aligncenter size-medium wp-image-709" title="xunit29" src="http://blog.strobaek.org/wp-content/uploads/xunit29-300x130.jpg" alt="" width="300" height="130" /></a></p>
<p>And when done the result is shown:</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit30.jpg"><img class="aligncenter size-medium wp-image-710" title="xunit30" src="http://blog.strobaek.org/wp-content/uploads/xunit30-300x158.jpg" alt="" width="300" height="158" /></a></p>
<p>I made two small tests: one that would pass and one that would  not.</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit31.jpg"><img class="aligncenter size-medium wp-image-711" title="xunit31" src="http://blog.strobaek.org/wp-content/uploads/xunit31-300x150.jpg" alt="" width="300" height="150" /></a></p>
<p>If you create a TFS report looking at the test runs (using ReportBuilder), you can see something like the following:</p>
<p><a href="http://blog.strobaek.org/wp-content/uploads/xunit32.jpg"><img class="aligncenter size-medium wp-image-712" title="xunit32" src="http://blog.strobaek.org/wp-content/uploads/xunit32-300x97.jpg" alt="" width="300" height="97" /></a></p>
<p>We are done!</p>
<p>A few things to note:</p>
<ul>
<li>To get TFS to compile and run the tests using xUnit, I create a solution folder (e.g. called <em>Lib)</em> on the same level as my projects and add all the xUnit files to this folder. I then reference <em>xunit.dll</em> from this folder.</li>
<li>NUnitTFS seems to have changed from  the Alpha version, where it was possible to give an argument “-v”. This is not  longer possible with newer versions.</li>
<li>Be sure that the process running the build has access to the drop location.</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.strobaek.org/2011/10/03/howto-team-foundation-server-and-xunit/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>NDepend</title>
		<link>http://blog.strobaek.org/2009/11/03/ndepend/</link>
		<comments>http://blog.strobaek.org/2009/11/03/ndepend/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 20:27:07 +0000</pubDate>
		<dc:creator>strobaek</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[UnitTest]]></category>
		<category><![CDATA[leaning]]></category>

		<guid isPermaLink="false">http://blog.strobaek.org/?p=88</guid>
		<description><![CDATA[For the past week I have been playing around with NDepend. Thank you to Patrick Smaccia from the NDepend dev team for this opportunity. NDepend is an amazing utility that does dependency analysis on .NET applications. Installation is dead easy; just fire up the app and you can install plugins for e.g. VS and Reflector. [...]]]></description>
			<content:encoded><![CDATA[<p>For the past week I have been playing around with <a title="NDepend" href="http://www.ndepend.com/Features.aspx">NDepend</a>. Thank you to Patrick Smaccia from the NDepend dev team for this opportunity.</p>
<p>NDepend is an amazing utility that does dependency analysis on .NET applications. Installation is dead easy; just fire up the app and you can install plugins for e.g. VS and Reflector. The integration into VS works seamlessly, which is a definite must for a tool such as this and its aim to add value to the development process. After all, we want &#8216;<a title="Zero Friction TDD" href="http://blog.ploeh.dk/2009/01/28/ZeroFrictionTDD.aspx">Zero Friction TDD</a>&#8216;, to use my friend <a href="http://blog.ploeh.dk">Mark&#8217;s</a> phrase.</p>
<p>All in all a great tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.strobaek.org/2009/11/03/ndepend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Yet Another Code Snippet formatter</title>
		<link>http://blog.strobaek.org/2009/08/29/yet-another-code-snippet-formatter/</link>
		<comments>http://blog.strobaek.org/2009/08/29/yet-another-code-snippet-formatter/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 13:37:14 +0000</pubDate>
		<dc:creator>strobaek</dc:creator>
				<category><![CDATA[UnitTest]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://blog.strobaek.org/?p=35</guid>
		<description><![CDATA[First some text. Then some code: [TestClass] public class MyTest { public MyTest() { } [TestMethod] public void Test() { // Fixture setup // Exercise system // Verify outcome Assert.Inconclusive(); // Teardown } } Then some more text:]]></description>
			<content:encoded><![CDATA[<p>First some text.</p>
<p>Then some code:</p>
<div id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">[TestClass]</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">public</span> <span style="color: #0000ff">class</span> MyTest</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">{</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">public</span> MyTest()</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    [TestMethod]</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> Test()</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      <span style="color: #008000">// Fixture setup</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      <span style="color: #008000">// Exercise system</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      <span style="color: #008000">// Verify outcome</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      Assert.Inconclusive();</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">      <span style="color: #008000">// Teardown</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">    }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">}</pre>
<p><!--CRLF--></div>
</div>
<p>Then some more text:</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.strobaek.org/2009/08/29/yet-another-code-snippet-formatter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

