<?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>Rob's Tech Blog &#187; Testing</title>
	<atom:link href="http://www.robfe.com/category/testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.robfe.com</link>
	<description>A blog about coding by Rob Fonseca-Ensor</description>
	<lastBuildDate>Tue, 22 Jun 2010 10:22:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>The new StoryQ</title>
		<link>http://www.robfe.com/2010/06/the-new-storyq/</link>
		<comments>http://www.robfe.com/2010/06/the-new-storyq/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 10:21:52 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Me]]></category>
		<category><![CDATA[StoryQ]]></category>

		<guid isPermaLink="false">http://www.robfe.com/?p=186</guid>
		<description><![CDATA[I was recently interviewed for a podcast about my Behaviour Driven Development framework, StoryQ. David Starr from Pluralsight did a great job with the interview &#8211; check it out at www.pluralsight-training.net/community/blogs/pluralcast/archive/2010/06/21/pluralcast-18-bdd-in-net-with-storyq.aspx. David also gave a great presentation on BDD at the 2010 tech ed in New Orleans, and I highly recommend it for anyone wondering [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://storyq.codeplex.com/"><img title="StoryQ" src="http://download.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=storyq&amp;DownloadId=103231&amp;Build=16821" alt="" width="234" height="87" /></a></p>
<p>I was recently interviewed for a podcast about my Behaviour Driven Development framework, <a href="http://storyq.codeplex.com">StoryQ</a>. <a href="http://www.pluralsight-training.net/community/blogs/starr/default.aspx">David Starr</a> from Pluralsight did a great job with the interview &#8211; check it out at <a href="http://www.pluralsight-training.net/community/blogs/pluralcast/archive/2010/06/21/pluralcast-18-bdd-in-net-with-storyq.aspx">www.pluralsight-training.net/community/blogs/pluralcast/archive/2010/06/21/pluralcast-18-bdd-in-net-with-storyq.aspx</a>.</p>
<p>David also gave a great presentation on BDD at the 2010 tech ed in New Orleans, and I highly recommend it for anyone wondering how to get started, or even whether they should get started, with BDD: <a href="http://www.msteched.com/2010/NorthAmerica/DPR302">http://www.msteched.com/2010/NorthAmerica/DPR302</a></p>
<h2>Improvements</h2>
<p>I think this is a good opportunity to talk about some of the new features in StoryQ. My <a href="http://www.robfe.com/2008/07/storyq-bdd-acceptance-testing-with-a-little-help-from-linq/">first post on StoryQ</a> came when we&#8217;d just committed it to codeplex, and a lot has changed since then:</p>
<ul>
<li>We&#8217;ve moved to Mercurial, which means our users can create <a href="http://storyq.codeplex.com/SourceControl/network">public forks</a></li>
<li><a href="http://storyq.codeplex.com/Thread/View.aspx?ThreadId=71553">No more ()=&gt; operator</a>. Thanks to <a href="http://flit.codeplex.com/">FLIT</a>, our fluent interface has evolved to accept plain old delegates, instead of Expression&lt;Action&gt;s. </li>
<li><a href="http://storyq.codeplex.com/wikipage?title=Tagging">Tagging</a>. Any Step can be &#8220;tagged&#8221;, which makes it easy to find in the output report</li>
<li>By default, the HTML report generated by StoryQ is JQuery-enriched, which makes it easy to narrow down stories by class hierarchy or tag. I&#8217;m particularly proud of this report &#8211; it&#8217;s a great way to share test results with everybody, especially when published from a continuous integration server.</li>
<li>A rewritten <a href="http://storyq.codeplex.com/wikipage?title=GUI">converter gui</a>, which lets you convert plain text stories into StoryQ code. The new version lets you choose what level of code generation you want (from Story initialisation statement to entire test class), and offers a basic form of intellisense.</li>
</ul>
<h2>Roadmap</h2>
<ul>
<li>The new fluent interface architecture allows us to support multiple (human) languages, and I&#8217;m looking forward to creating fluent interfaces for non-english speakers.</li>
<li>I think we&#8217;ll be able to create a new way of doing BDD in .NET that takes advantage of C# 4.0&#8242;s dynamic features</li>
<li>We still haven&#8217;t added xUnit support! Which is lame, because it&#8217;s probably going to be really easy&#8230; </li>
</ul>
<p>Please check StoryQ out and let us know if you&#8217;ve got any bright ideas for it! And if you&#8217;ve never tried BDD, you should definitely look into it. It&#8217;s even more fun than TDD!!!</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<p><a href="http://www.robfe.com/2008/07/storyq-bdd-acceptance-testing-with-a-little-help-from-linq/">http://www.robfe.com/2008/07/storyq-</a></p>
<p><a href="http://www.robfe.com/2008/07/storyq-bdd-acceptance-testing-with-a-little-help-from-linq/">bdd-acceptance-testing-with-a-little-help-from-linq/</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.robfe.com/2010/06/the-new-storyq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Dependable code with Dependency Injection &#8211; Slides &amp; Source</title>
		<link>http://www.robfe.com/2008/09/building-dependable-code-with-di-slides-n-source/</link>
		<comments>http://www.robfe.com/2008/09/building-dependable-code-with-di-slides-n-source/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 21:21:54 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[codecamp]]></category>
		<category><![CDATA[DI]]></category>
		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://www.robfe.com/?p=47</guid>
		<description><![CDATA[Here are my slides and the source code to the TDD &#38; DI talk I gave at CodeCamp Auckland 2008. My intent with the talk was to explain how TDD can be really good, and how DI can make TDD easier. If you weren&#8217;t at my talk and have any questions &#8211; I&#8217;m in the market [...]]]></description>
			<content:encoded><![CDATA[<p>Here are my slides and the source code to the TDD &amp; DI talk I gave at CodeCamp Auckland 2008. My intent with the talk was to explain how TDD can be really good, and how DI can make TDD easier.</p>
<p>If you weren&#8217;t at my talk and have any questions &#8211; I&#8217;m in the market for more comments.</p>
<p>I&#8217;ve got one more link to add, these podcasts were what actually inspired my subject: <a href="http://channel9.msdn.com/shows/ARCast+with+Ron+Jacobs/ARCastnet-Presenter-First-Pattern-Part-1/">http://channel9.msdn.com/shows/ARCast+with+Ron+Jacobs/ARCastnet-Presenter-First-Pattern-Part-1/</a></p>
<p><a href="http://www.robfe.com/wp-content/uploads/2008/09/robfecodecamp-tdd-and-di.zip">Here is my source code</a> (perfectly commented), and <a href="http://www.robfe.com/wp-content/uploads/2008/09/real-world-tdd-cc.pptx">here are my slides</a></p>
<p>Stay tuned for a bigger (50 line) do-it-yourself DI container that <em>would</em> be useful in production.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robfe.com/2008/09/building-dependable-code-with-di-slides-n-source/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Bridging Unit Test Frameworks with Gallio</title>
		<link>http://www.robfe.com/2008/08/bridging-unit-test-frameworks-with-gallio/</link>
		<comments>http://www.robfe.com/2008/08/bridging-unit-test-frameworks-with-gallio/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 00:01:57 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[Testing]]></category>
		<category><![CDATA[alt.net]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Gallio]]></category>
		<category><![CDATA[Resharper]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://www.robfe.com/?p=41</guid>
		<description><![CDATA[Update: Jetbrains have just released Resharper 4.5, which contains native MSTest support. No need to read the rest of this article, then! Sweet. Now I can use the Resharper test runner (superb) on MsUnit tests (mandated). Here in .Net land, we&#8217;ve got an awful lot of choice if we want to write unit tests. First [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update: Jetbrains have </strong><a href="http://www.jetbrains.com/resharper/beta.html"><strong>just released Resharper 4.5</strong></a><strong>, which contains native MSTest support. </strong>No need to read the rest of this article, then!</p>
<p><span id="more-41"></span></p>
<p>Sweet. Now I can use the Resharper test runner (superb) on MsUnit tests (mandated).</p>
<p>Here in .Net land, we&#8217;ve got an awful lot of choice if we want to write unit tests. First we had NUnit and MbUnit, then Microsoft came to the party and cloned NUnit. These day&#8217;s there&#8217;s also xUnit and the exotic NBehave.</p>
<p>Back when I was learning Java, there was pretty much just JUnit. You could write your tests in that one framework, and then they could be run pretty much anywhere (just like java <img src='http://www.robfe.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). You could use the JUnit console runner, the GUI runner, eclipse, intelliJ, NAnt, CruiseControl &#8211; they all knew how to run JUnit tests, because JUnit was the defacto.</p>
<p>These days, in .Net, we get to choose between lots of different testing frameworks, each with their own strengths and weaknesses. Each of these frameworks comes with their own test runner, for example, visual studio is (arguably) capable of executing MsUnit (AKA MsTest AKA TfsUnit) tests. TestDriven.Net came along and made the visual studio integration much nicer. You&#8217;d also typically be executing these tests from MSBuild if you were trying to do Continuous Integration. NUnit has its own GUI for running NUnit tests, and there are a lot of third party NUnit test runners.</p>
<p>Personally, I&#8217;m a big fan of the Resharper test runner, because you just click on the little green icon by your test and it&#8217;s started testing. The test results window is what cinches the deal, it provides you with a hierarchical view of your test results, and makes it really easy to re-run whatever you like.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.robfe.com/wp-content/uploads/2008/08/image.png" border="0" alt="Resharper running NUnit tests" width="555" height="367" /></p>
<p>But it only works on Nunit:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.robfe.com/wp-content/uploads/2008/08/image1.png" border="0" alt="Resharper NOT running MsUnit tests" width="415" height="373" /></p>
<p><a href="http://www.jameskovacs.com/blog/CommentView.aspx?guid=92789a07-02f0-41fc-a18f-aa12c858939c">James Kovacs had written a MsUnit plugin</a> that let Resharper run MsUnit tests &#8211; but those crazy jetbrainers have been upgrading things again and now the plugin doesn&#8217;t work.</p>
<p><a href="http://www.gallio.org/Default.aspx">Enter Gallio:</a></p>
<blockquote><p>The Gallio Automation Platform is an open, extensible, and neutral system for .NET that provides a common object model, runtime services and tools (such as test runners) that may be leveraged by any number of test frameworks.</p></blockquote>
<p>Essentially, Gallio is a bridge between ALL of the testing frameworks I&#8217;ve just mentioned and a huge number of test runners. The number one thing for me is that now I can use the Resharper runner on my MsUnit tests. All I had to do was grab the installer off the Gallio website, run it, and the next time I started Visual Studio, Resharper was ready to run my MsUnit tests:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://www.robfe.com/wp-content/uploads/2008/08/image2.png" border="0" alt="image" width="467" height="705" /></p>
<p>I&#8217;m impressed that the people behind Gallio have been able to define a common object model for all these different testing frameworks.</p>
<p>I&#8217;d be really keen to see a Gallio plugin for TeamCity. Browsing through the Gallio discussions, it seems like it&#8217;s definitely on its way. But seriously, I think Jetbrains should be lending a hand here: both with the TeamCity plugin and with Resharper. They&#8217;d only be helping themselves.</p>
<p><span style="text-decoration: line-through;">NB: I just tried this with Resharper 4.1 RC2, and it seems like those rascally jetbrainers have broken things again. I&#8217;m sure the Gallio team will get right on it as soon as Resharper 4.1 is stable&#8230;</span></p>
<p>If you&#8217;re looking to get Gallio working with Reshaper 4.1+, check out Jeremy&#8217;s comment on this post&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robfe.com/2008/08/bridging-unit-test-frameworks-with-gallio/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>StoryQ: BDD / Acceptance Testing with a little help from LINQ</title>
		<link>http://www.robfe.com/2008/07/storyq-bdd-acceptance-testing-with-a-little-help-from-linq/</link>
		<comments>http://www.robfe.com/2008/07/storyq-bdd-acceptance-testing-with-a-little-help-from-linq/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 00:02:30 +0000</pubDate>
		<dc:creator>Rob</dc:creator>
				<category><![CDATA[StoryQ]]></category>
		<category><![CDATA[BDD]]></category>
		<category><![CDATA[Codeplex]]></category>
		<category><![CDATA[NBehave]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://www.robfe.com/?p=6</guid>
		<description><![CDATA[My first ever &#8220;write&#8221; operation to the Open Source community just happened! Todd (who I am working with at Datacom) was really keen to start using NBehave. He wanted to provide our clients with more visibility of what features were implemented / broken in each release. Because we were releasing every time someone checked in some code, [...]]]></description>
			<content:encoded><![CDATA[<p>My first ever &#8220;write&#8221; operation to the Open Source community <a href="http://www.codeplex.com/storyq">just happened</a>! Todd (who I am working with at Datacom) was really keen to start using <a title="NBehave Homepage" href="http://nbehave.org/">NBehave</a>. He wanted to provide our clients with more visibility of what features were implemented / broken in each release. Because we were releasing every time someone checked in some code, it was pretty important to automate this.</p>
<p>NBehave, much like ruby&#8217;s <a href="http://rspec.info/">rspec</a>, is a great framework for making <a href="http://www.extremeprogramming.org/rules/userstories.html">user storie</a>s executable within your IDE. Outside of your IDE, you&#8217;ve got things like <a href="http://fitnesse.org/">Fitnesse</a>, <a href="http://www.zibreve.com/">ZiBreve</a>, and <a href="http://studios.thoughtworks.com/twist">Twist</a> - which are better if you want non technical people to be able to interactively define storys. On our project, however, we had technical people putting the acceptance tests into our Nunit project. Now, NBehave is written as an extension to NUnit, so i guess you could say they are compatible, but NBehave wasn&#8217;t compatible with the two NUnit runners that we were using all the time. Our developers used the superb <a href="http://www.jetbrains.com/resharper/index.html">Resharper</a> test unit runner as they coded, and our build server (<a href="http://www.jetbrains.com/teamcity/index.html">TeamCity</a>, damn you JetBrains!) both wanted to run plain old NUnit.Framework.TestAttribute Tests.</p>
<p>So we set out to create a simple framework for running things that looked like story tests from within any test framework. <a href="http://www.codeplex.com/storyq">StoryQ</a> is what Todd &amp; I came up with. The key points of difference from NBehave are:</p>
<ul>
<li>No dependency on any particular unit testing framework (although StoryQ does like to know what kind of Inconclusive / Pending exception your framework uses)</li>
<li>StoryQ can use Lambda Expressions to make a sentence-like string out of a method call. This might not sound like much, but it actually takes away a lot of duplication pain. Thanks, LINQ!</li>
<li>When you run a brand new story test, it will be marked as pending (not failed).</li>
<li>By default, StoryQ output goes to Console.Out. You can also make it write a coloured html report to a file.</li>
<li>There is a GUI in the project that can convert from plain text into test case code.</li>
</ul>
<p>We&#8217;ve tried to keep it all very simple and lightweight. If you feel like your current acceptance testing framework is too clunky, or if any of the benefits above sound good to you, then please <a href="http://www.codeplex.com/storyq/Release/ProjectReleases.aspx?ReleaseId=15573">grab the code </a>and check out the samples. There&#8217;s an explanation up on the <a href="http://www.codeplex.com/storyq">project homepage</a>. We are very keen for feedback: issues, comments, feature requests, contributors &#8211; please don&#8217;t hold back.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robfe.com/2008/07/storyq-bdd-acceptance-testing-with-a-little-help-from-linq/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>
