<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://lindsve.net/wp-atom.php">
	<title type="text">Lindsve.net</title>
	<subtitle type="text">my own little space on the net</subtitle>

	<updated>2009-08-25T07:39:52Z</updated>
	<generator uri="http://wordpress.org/" version="2.8.5">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://lindsve.net" />
	<id>http://lindsve.net/feed/atom/</id>
	

			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/lindsve" /><feedburner:info uri="lindsve" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[TargetProcess now integrates with TFS]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/bzXL0FR6xjw/" />
		<id>http://lindsve.net/2009/08/targetprocess-now-integrates-with-tfs/</id>
		<updated>2009-08-25T07:39:52Z</updated>
		<published>2009-08-25T07:39:52Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="TargetProcess" /><category scheme="http://lindsve.net" term="tfs" />		<summary type="html"><![CDATA[Just wanted to post that TargetProcess now finally integrates with TFS source control management! I can now check in my changes to TFS and update my User Stories/Tasks in TargetProcess from the checkin comments, like:
#1234 time:0.5 state:done comment:Foobar!

This is a huge, time saving WIN(!), since I don’t have to navigate within TargetProcess just for updating [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/08/targetprocess-now-integrates-with-tfs/"><![CDATA[<p>Just wanted to post that <a href="http://targetprocess.com/">TargetProcess</a> now finally integrates with TFS source control management! I can now check in my changes to TFS and update my User Stories/Tasks in TargetProcess from the checkin comments, like:</p>
<blockquote><p>#1234 time:0.5 state:done comment:Foobar!</p>
</blockquote>
<p>This is a huge, time saving WIN(!), since I don’t have to navigate within TargetProcess just for updating a task with time/state/++.</p>
<p>More details can be found in the <a href="http://targetprocess.com/support/Documentation.aspx">documentation for integrating with TFS</a>.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/08/targetprocess-now-integrates-with-tfs/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/08/targetprocess-now-integrates-with-tfs/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/08/targetprocess-now-integrates-with-tfs/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[So want to attend: TDD Masterclass in the UK]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/gJGNBoprGdg/" />
		<id>http://lindsve.net/2009/08/so-want-to-attend-tdd-masterclass-in-the-uk/</id>
		<updated>2009-08-25T05:42:27Z</updated>
		<published>2009-08-25T05:42:27Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="TDD" /><category scheme="http://lindsve.net" term="unit testing" />		<summary type="html"><![CDATA[
Roy Osherove is giving an hands-on TDD Masterclass in the UK, September 21-25. Roy is author of &#34;The Art of Unit Testing&#34; (http://www.artofunittesting.com/), a leading tdd &#38; unit testing book; he maintains a blog at http://iserializable.com (which amoung other things has critiqued tests written by Microsoft for asp.net MVC &#8211; check out the testreviews category) [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/08/so-want-to-attend-tdd-masterclass-in-the-uk/"><![CDATA[</p>
<p>Roy Osherove is giving an hands-on TDD Masterclass in the UK, September 21-25. Roy is author of &quot;The Art of Unit Testing&quot; (<a href="http://www.artofunittesting.com/">http://www.artofunittesting.com/</a>), a leading tdd &amp; unit testing book; he maintains a blog at <a href="http://iserializable.com">http://iserializable.com</a> (which amoung other things has critiqued tests written by Microsoft for <a href="http://asp.net">asp.net</a> MVC &#8211; check out the testreviews category) and has recently been on the Scott Hanselman podcast (<a href="http://bit.ly/psgYO">http://bit.ly/psgYO</a>) where he educated Scott on best practices in Unit Testing techniques. For a further insight into Roy&#8217;s style, be sure to also check out Roy&#8217;s talk at the recent Norwegian Developer&#8217;s Conference (<a href="http://bit.ly/NuJVa">http://bit.ly/NuJVa</a>). </p>
<p>Full Details here: <a href="http://bbits.co.uk/tddmasterclass">http://bbits.co.uk/tddmasterclass</a></p>
<p>bbits are holding a raffle for a free ticket for the event. To be eligible to win the ticket (worth £2395!) you MUST paste this text, including all links, into your blog and email <a href="mailto:&#x49;&#x61;&#x6E;&#64;&#x62;&#x62;&#x69;&#x74;&#x73;&#x2E;&#x63;o.uk">&#x49;&#x61;&#x6E;&#x40;&#x62;&#x62;&#x69;&#x74;&#115;&#x2E;&#99;o.uk</a>with the url to the blog entry.&#160; The draw will be made on September 1st and the winner informed by email and on <a href="http://bbits.co.uk/blog">bbits.co.uk/blog</a></p>
<p>===</p>
<p>I’m currently reading Roy’s book now and it gives heck of a lot of good advise to a TDD novice like me when it comes to writing good and maintainable unit tests, and to have 5 days with this guy would be awesome to progress further in the TDD space <img src='http://lindsve.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/08/so-want-to-attend-tdd-masterclass-in-the-uk/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/08/so-want-to-attend-tdd-masterclass-in-the-uk/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/08/so-want-to-attend-tdd-masterclass-in-the-uk/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Introduced to microlight aviation]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/LGmMotH_wnE/" />
		<id>http://lindsve.net/2009/07/introduced-to-microlight-aviation/</id>
		<updated>2009-07-25T14:45:49Z</updated>
		<published>2009-07-25T14:45:49Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="microlight" />		<summary type="html"><![CDATA[The local microligth club had an open day last saturday, and since I’ve for a long time have been interested in aviation (did play around with R/C airplanes a couple years ago) I took the trip over there for a look.
The weather was great and more and more microlight planes arrived to the airfield. I [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/07/introduced-to-microlight-aviation/"><![CDATA[<p>The <a href="http://mikrofly.org">local microligth club</a> had an open day last saturday, and since I’ve for a long time have been interested in aviation (did play around with R/C airplanes a couple years ago) I took the trip over there for a look.</p>
<p>The weather was great and more and more microlight planes arrived to the airfield. I was introduced to the planes and the hobby, and I also grabbed the opportunity to join one of the experienced members of the club in his plane for a flight over the local area. That was a great ride! <img src='http://lindsve.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I learned enough about microlight aviation that day that I really got bitten by it and now really considering learning to fly.</p>
<p><a href="http://lindsve.net/uploads/2009/07/cimg0888.jpg"><img style="border-right-width: 0px; margin: 0px 5px 5px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CIMG0888" border="0" alt="CIMG0888" src="http://lindsve.net/uploads/2009/07/cimg0888-thumb.jpg" width="244" height="184" /></a><a href="http://lindsve.net/uploads/2009/07/cimg0890.jpg"><img style="border-right-width: 0px; margin: 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CIMG0890" border="0" alt="CIMG0890" src="http://lindsve.net/uploads/2009/07/cimg0890-thumb.jpg" width="244" height="184" /></a><a href="http://lindsve.net/uploads/2009/07/cimg0896.jpg"><img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CIMG0896" border="0" alt="CIMG0896" src="http://lindsve.net/uploads/2009/07/cimg0896-thumb.jpg" width="244" height="184" /></a><a href="http://lindsve.net/uploads/2009/07/cimg0897.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="CIMG0897" border="0" alt="CIMG0897" src="http://lindsve.net/uploads/2009/07/cimg0897-thumb.jpg" width="244" height="184" /></a></p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/07/introduced-to-microlight-aviation/#comments" thr:count="1" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/07/introduced-to-microlight-aviation/feed/atom/" thr:count="1" />
		<thr:total>1</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/07/introduced-to-microlight-aviation/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Bookshelf updates]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/JjLtsROTNLE/" />
		<id>http://lindsve.net/2009/06/bookshelf-updates/</id>
		<updated>2009-06-22T06:27:22Z</updated>
		<published>2009-06-22T06:27:22Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="books" /><category scheme="http://lindsve.net" term="Development" />		<summary type="html"><![CDATA[Manning.com is currently running a discount with 42% off the retail price using the coupon code “alt42”. This gave me the final push to order some updates to our book library at work:

Building Domain Specific Languages in Boo (by Ayende Rahien) 
The Art of Unit Testing (by Roy Osherove) 
NHibernate in Action (by Pierre Henri [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/06/bookshelf-updates/"><![CDATA[<p>Manning.com is currently running a discount with 42% off the retail price using the coupon code “alt42”. This gave me the final push to order some updates to our book library at work:</p>
<ul>
<li><a href="http://www.manning.com/rahien/">Building Domain Specific Languages in Boo</a> (by Ayende Rahien) </li>
<li><a href="http://www.manning.com/osherove/">The Art of Unit Testing</a> (by Roy Osherove) </li>
<li><a href="http://www.manning.com/kuate/">NHibernate in Action</a> (by Pierre Henri Kuaté, Tobin Harris, Christian Bauer, and Gavin King) </li>
<li><a href="http://www.manning.com/palermo/">ASP.NET MVC in Action</a> (Jeffrey Palermo, Ben Scheirman, and Jimmy Bogard with Freedom Dumlao) </li>
</ul>
<p>I’m really looking forward to reading these books, especially the book about unit testing by Osherove.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/06/bookshelf-updates/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/06/bookshelf-updates/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/06/bookshelf-updates/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Podcasts]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/5ML_ub9y7IQ/" />
		<id>http://lindsve.net/2009/02/podcasts/</id>
		<updated>2009-02-10T07:32:29Z</updated>
		<published>2009-02-04T08:03:32Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term=".net" /><category scheme="http://lindsve.net" term="podcast" />		<summary type="html"><![CDATA[I have a habit of listening to development/.NET related podcasts on my way to/from work and here is the list of podcasts I subscribe to in no particular order:

Alt.NET Podcast (iTunes link)       Alt.NET Podcast about TDD, BDD, DDD, DI, IoC, and other acronyms. 
Stack Overflow (iTunes link)   [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/02/podcasts/"><![CDATA[<p>I have a habit of listening to development/.NET related podcasts on my way to/from work and here is the list of podcasts I subscribe to in no particular order:</p>
<ul>
<li><a href="http://altnetpodcast.com/" target="_blank">Alt.NET Podcast</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=280650926" target="_blank">iTunes link</a>)       <br /><em>Alt.NET Podcast about TDD, BDD, DDD, DI, IoC, and other acronyms.</em> </li>
<li><a href="http://blog.stackoverflow.com/category/podcasts/" target="_blank">Stack Overflow</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=279215411" target="_blank">iTunes link</a>)       <br /><em>Jeff Atwood (of codinghorror.com) and Joel Spolsky (of joelonsoftware.com) discuss the development of their new programming community, StackOverflow.com.</em> </li>
<li><a href="http://deepfriedbytes.com/" target="_blank">Deep Fried Bytes</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=281776316" target="_blank">iTunes link</a>)       <br /><em>Deep Fried Bytes is an audio talk show with a Southern flavor hosted by technologists and developers Keith Elder and Chris Woodruff. The show discusses a wide range of topics including application development, operating systems and technology in general. Anything is fair game if it plugs into the wall or takes a battery.</em> </li>
<li><a href="http://www.hanselminutes.com/" target="_blank">Hanselminutes</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=117488860" target="_blank">iTunes link</a>)       <br /><em>Hanselminutes is a weekly audio talk show with noted web developer and technologist Scott Hanselman and hosted by Carl Franklin. Scott discusses utilities and tools, gives practical how-to advice, and discusses ASP.NET or Windows issues and workarounds.</em> </li>
<li><a href="http://herdingcode.com/" target="_blank">Herding Code</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=284067914" target="_blank">iTunes link</a>)       <br /><em>A weekly discussion featuring K. Scott Allen (odetocode.com), Kevin Dente, Scott Koon (lazycoder.com), and Jon Galloway.</em> </li>
<li><a href="http://www.dotnetrocks.com/" target="_blank">.NET Rocks!</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=127976205" target="_blank">iTunes link</a>)       <br /><em>.NET Rocks! is an Internet Audio Talk Show for Microsoft .NET Developers.</em> </li>
<li><a href="http://www.radiotfs.com/" target="_blank">Radio TFS</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=274094361" target="_blank">iTunes link</a>)       <br /><em>Updates and in-depth discussions from the community involved in using Microsoft Visual Studio Team System, and Microsoft Visual Studio Team Foundation Server.</em> </li>
<li><a href="http://www.ingebrigtsen.info/" target="_blank">Einar Ingebrigtsen &#8211; podcast</a> (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=304523653" target="_blank">iTunes link</a>)       <br /><em>Random ramblings from a Norwegian software developer</em> </li>
</ul>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/02/podcasts/#comments" thr:count="3" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/02/podcasts/feed/atom/" thr:count="3" />
		<thr:total>3</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/02/podcasts/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Integrating NUnit test result in the TFS Data Warehouse]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/DFGdETRto_s/" />
		<id>http://lindsve.net/?p=147</id>
		<updated>2009-01-21T07:26:19Z</updated>
		<published>2009-01-20T14:37:58Z</published>
		<category scheme="http://lindsve.net" term=".net" /><category scheme="http://lindsve.net" term="mbunit" /><category scheme="http://lindsve.net" term="nunit" /><category scheme="http://lindsve.net" term="tfs" /><category scheme="http://lindsve.net" term="unittesting" />		<summary type="html"><![CDATA[Team Foundation Server has a great story when it comes to integrating several development practices into a single data warehouse for running reports on, and out of the box (at least) the Developer and Test editions of Visual Studio integrates into this warehouse with MS’s own unit testing framework, MSTest.
We played around a bit with [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/01/integrating-nunit-test-result-in-the-tfs-data-warehouse/"><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Team_Foundation_Server" target="_blank">Team Foundation Server</a> has a great story when it comes to integrating several development practices into a single data warehouse for running reports on, and out of the box (at least) the Developer and Test editions of Visual Studio integrates into this warehouse with MS’s own unit testing framework, <a href="http://en.wikipedia.org/wiki/MSTest" target="_blank">MSTest</a>.</p>
<p>We played around a bit with MSTest a while ago in a couple of projects I’m on at work, but came to the conclusion that it fell short of <a href="http://www.mbunit.com/" target="_blank">MbUnit</a> which provides a much better story when it comes with integrating with other test runner tools (<a href="http://testdriven.net/" target="_blank">TestDriven.Net</a> / <a href="http://www.jetbrains.com/resharper/" target="_blank">ReSharper</a>) which I think is far superior to the one in Visual Studio and also has a larger arsenal of extensions and out-of-the-box asserts.</p>
<p>During the time we have been using MbUnit we have always been using the HTML reports which MbUnit provides and adding a link to this report in the build report provided by Team Build. The ability to have the test results in TFS have been something we have wanted the whole time though, and lately I found a project called <a href="http://www.codeplex.com/nunit4teambuild" target="_blank">NUnit for Team Build</a> on <a href="http://www.codeplex.com/" target="_blank">CodePlex</a>. This triggered me to try <a href="http://www.nunit.org/index.php" target="_blank">NUnit</a> with a subset of our tests to try to get this thing running and this solution provides exactly what we have wanted.</p>
<p>There wasn’t much hassle getting the unit tests converted from MbUnit to NUnit, as it mostly consisted of replacing the using statements to point to NUnit.Framework instead of MbUnit.Framework and then rename/edit some of the asserts.</p>
<p> <span id="more-147"></span>
</p>
<h1></h1>
<h3>What to do</h3>
<p>NUnit for Team Build doesn’t perform any kind of voodoo magic here. The main idea of this project is to simply use XSLT to transform the XML test results from NUnit to the XML format which MSTest generates and then trigger the MSTest executable to publish these results to TFS. What NUnit for Team Build provides is the XSLT document to be used for the transformation, and as such it should be feasible to create your own XSLT document to enable other unit testing frameworks to publish their results to TFS.</p>
<p>The actions necessary to set this up in Team Build is already described on the project site for NUnit for Team Build so I don’t want to repeat that here, but you can find it <a href="http://www.codeplex.com/nunit4teambuild/Wiki/View.aspx?title=sample%20script&amp;referringTitle=Home" target="_blank">here</a>.</p>
<p>I did have to alter their XSLT document a bit to make it work though. Specifically:</p>
<ol>
<li>Had to modify the transformation of the paths to the test assemblies </li>
<li>The error message NUnit adds when expected values does not match contains a line break so the expected value and real value is displayed on separate lines. I wanted them on a single line so that error messages for these cases where displayed on a single line which fits the report view in Visual Studio better. </li>
<li>Had to add a error message if tests are not executed for some reason (we had some tests which for some reason where inside private text fixtures, which caused them to not be executed) </li>
<li>Added support for the description attribute so that test descriptions are included in the TFS results </li>
</ol>
<p>The first item was easy enough. I just compared where the XSLT document expected to find items inside the NUnit XML files and modified them.</p>
<p>For the error messages modifications I looked in the &lt;Output&gt; element in the XSLT document. The original transformation is like this:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">xsl:for-each</span> <span class="attr">select</span><span class="kwrd">=&quot;./failure&quot;</span><span class="kwrd">&gt;</span></pre>
<pre class="csharpcode"><span class="kwrd">    </span><span class="kwrd">&lt;</span><span class="html">ErrorInfo</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">Message</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;./message&quot;</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">Message</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">StackTrace</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;./stack-trace&quot;</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">StackTrace</span><span class="kwrd">&gt;</span>
<span class="kwrd">    &lt;/</span><span class="html">ErrorInfo</span><span class="kwrd">&gt;</span></pre>
<pre class="csharpcode"><span class="kwrd">&lt;/</span><span class="html">xsl:for-each</span><span class="kwrd">&gt;</span></pre>
<p>
  </p>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>I added a simple conditional test on the message and if it contains the text ‘Expected’, then simply remove line breaks in the message:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">xsl:for-each</span> <span class="attr">select</span><span class="kwrd">=&quot;./failure&quot;</span><span class="kwrd">&gt;</span></pre>
<pre class="csharpcode"><span class="kwrd">    </span><span class="kwrd">&lt;</span><span class="html">ErrorInfo</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">Message</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">xsl:choose</span><span class="kwrd">&gt;</span>
                <span class="kwrd">&lt;</span><span class="html">xsl:when</span> <span class="attr">test</span><span class="kwrd">=&quot;contains(./message, 'Expected')&quot;</span><span class="kwrd">&gt;</span>
                    <span class="kwrd">&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;translate(./message, '&amp;#xA;', '')&quot;</span><span class="kwrd">/&gt;</span>
                <span class="kwrd">&lt;/</span><span class="html">xsl:when</span><span class="kwrd">&gt;</span>
                <span class="kwrd">&lt;</span><span class="html">xsl:otherwise</span><span class="kwrd">&gt;</span>
                    <span class="kwrd">&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;./message&quot;</span><span class="kwrd">/&gt;</span>
                <span class="kwrd">&lt;/</span><span class="html">xsl:otherwise</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;/</span><span class="html">xsl:choose</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">Message</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">StackTrace</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;./stack-trace&quot;</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">StackTrace</span><span class="kwrd">&gt;</span>
<span class="kwrd">    &lt;/</span><span class="html">ErrorInfo</span><span class="kwrd">&gt;</span></pre>
<pre class="csharpcode"><span class="kwrd">&lt;/</span><span class="html">xsl:for-each</span><span class="kwrd">&gt;</span></pre>
<p>
  </p>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>Adding an error message for not executed tests where also pretty trivial. I added the following inside the same &lt;Output&gt; element, below the above failure message handling:</p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">xsl:for-each</span> <span class="attr">select</span><span class="kwrd">=&quot;./reason&quot;</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">ErrorInfo</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">Message</span><span class="kwrd">&gt;</span>
            <span class="kwrd">&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;translate(./message, '&amp;#xA;', '')&quot;</span><span class="kwrd">/&gt;</span>
        <span class="kwrd">&lt;/</span><span class="html">Message</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">StackTrace</span><span class="kwrd">&gt;&lt;/</span><span class="html">StackTrace</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">ErrorInfo</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">xsl:for-each</span><span class="kwrd">&gt;</span></pre>
<p><span class="kwrd">My last modification is that I added support for the description field. This was done by adding the following inside the &lt;UnitTest&gt; element, just before the &lt;Css&gt; element:</span></p>
<pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">Description</span><span class="kwrd">&gt;&lt;</span><span class="html">xsl:value-of</span> <span class="attr">select</span><span class="kwrd">=&quot;@description&quot;</span><span class="kwrd">/&gt;&lt;/</span><span class="html">Description</span><span class="kwrd">&gt;</span></pre>
<h3>Some afterthoughts</h3>
<p><span class="kwrd">There is a couple of things which I still want to update in the XSLT document though, but which I haven’t had time to look at yet:</span></p>
<ol>
<li><span class="kwrd"></span><span class="kwrd">The Test Results window in Visual Studio does not contain any information in the Project column in the test lists. This won’t be a problem as long as all tests is inside the same assembly, but if you have tests in multiple assemblies, then it would be nice to see where tests are located in this view.</span> </li>
<li><span class="kwrd">All dates and time data is hardcoded in the XSLT document and the transformation of the duration times seems to be weak. I would like to add some better transforms for this, but this is also something which I haven’t got to yet.</span> </li>
</ol>
<p><span class="kwrd">If anyone have some ideas for handling these two issues, then I would love to see them.</span></p>
<p><span class="kwrd">Note: I have also seen some references to <a href="http://www.codeplex.com/NUnitForVS" target="_blank">NUnitForVS</a>, where NUnit tests are executed by the test runner in Visual Studio:</span></p>
<blockquote>
<p>This add-in for Visual Studio Team System will allow you to run NUnit tests just like Visual Studio Unit tests integrated in Visual Studio. It makes Visual Studio to see NUnit test as mstest. That means everything you can do with Visual Studio Unit tests you can also do with NUnit tests. For example publishing of results in TFS or code coverage.</p>
</blockquote>
<p>This should be a better solution than the one I have described in this post, simply because it adds code coverage too. I plan to take a look at this one in the near future, but if anyone already has done so and has some feedback, please add them in the comments <img src='http://lindsve.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/01/integrating-nunit-test-result-in-the-tfs-data-warehouse/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/01/integrating-nunit-test-result-in-the-tfs-data-warehouse/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/01/integrating-nunit-test-result-in-the-tfs-data-warehouse/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[New version of Typemock Isolator available, now with VB.NET API support]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/ecqmEUNJXm0/" />
		<id>http://lindsve.net/?p=144</id>
		<updated>2009-01-13T12:16:37Z</updated>
		<published>2009-01-13T12:15:39Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term=".net" /><category scheme="http://lindsve.net" term="mocking" /><category scheme="http://lindsve.net" term="unittesting" /><category scheme="http://lindsve.net" term="vb" />		<summary type="html"><![CDATA[Programming Visual Basic applications?
Typemock have released a new version of their unit testing tool, Typemock Isolator 5.2.     This version includes a new friendly VB.NET API which makes Isolator the best Isolation tool for unit testing A Visual Basic (VB) .NET application.
Isolator now allows unit testing in VB or C# for many [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/01/new-version-of-typemock-isolator-available-now-with-vbnet-api-support/"><![CDATA[<p><a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">Programming Visual Basic</a> applications?</p>
<p>Typemock have released a new version of their <a href="http://www.typemock.com/?utm_source=hp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">unit testing</a> tool, Typemock Isolator 5.2.     <br />This version includes a new friendly <a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">VB.NET </a>API which makes Isolator the best Isolation tool for <a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">unit testing A Visual Basic (VB) .NET application</a>.</p>
<p>Isolator now allows unit testing in VB or C# for many ‘hard to test’ technologies such as <a href="http://typemock.com/sharepointpage.php?utm_source=spp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">SharePoint</a>, ASP.NET MVC, partial support for Silverlight, WPF, LINQ, WF, Entity Framework, <a href="http://www.typemock.com/wcfpage.php?utm_source=wcfp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">WCF unit testing</a> and more.</p>
<p>Note that the first 25 bloggers who blog this text in their blog and tell us about it, will get a Free Full Isolator license (worth $139). If you post this in a VB.NET dedicated blog, you&#8217;ll get a license automatically (even if more than 25 submit) during the first week of this announcement.</p>
<p>Go ahead, click the following link for <a href="http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html?utm_source=vb_blog&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvbblog">more information </a>on how to get your free license.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/01/new-version-of-typemock-isolator-available-now-with-vbnet-api-support/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/01/new-version-of-typemock-isolator-available-now-with-vbnet-api-support/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/01/new-version-of-typemock-isolator-available-now-with-vbnet-api-support/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Scorecard 1.5 and Scorecard for iPhone available]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/jdWuiOL5XgY/" />
		<id>http://lindsve.net/2009/01/scorecard-15-and-scorecard-for-iphone-available/</id>
		<updated>2009-01-09T10:51:03Z</updated>
		<published>2009-01-09T10:51:03Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="iPhone" /><category scheme="http://lindsve.net" term="Scorecard" />		<summary type="html"><![CDATA[I regret that I haven’t been doing much blogging for a while, but I plan to get better at it in the future as I have some ideas for posts to come.
We released Scorecard for Windows and Mac about a month ago and a bit later the free iPhone companion app for Scorecard (iTunes link) [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2009/01/scorecard-15-and-scorecard-for-iphone-available/"><![CDATA[<p>I regret that I haven’t been doing much blogging for a while, but I plan to get better at it in the future as I have some ideas for posts to come.</p>
<p>We released <a href="http://cynicalpeak.com/scorecard/" target="_blank">Scorecard</a> for Windows and Mac about a month ago and a bit later the free iPhone companion app for Scorecard (<a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=300279292&amp;mt=8" target="_blank">iTunes link</a>) was approved in the App Store, and I figured that this would be a good opportunity to pick up the blogging <img src='http://lindsve.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The main addition to this version is support for syncing data with the iPhone application. We really like this new feature as it enables golfers to track their data while being at the golf course and then easily sync this data back into the desktop application. We originally wanted to do syncing through iTunes, but this is not something Apple has allowed or enabled, so we’re facilitating the syncing with <a href="http://en.wikipedia.org/wiki/Bonjour_(software)" target="_blank">Bonjour</a> over WiFi so the iPhone application will auto-discover the desktop as long as syncing is enabled in the desktop application and they’re both on the same network, and this works great!</p>
<p>We have already started planning the 2.0 version and the main features we’re planning for this is support for 9 hole rounds and a graph view of the statistics.</p>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2009/01/scorecard-15-and-scorecard-for-iphone-available/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2009/01/scorecard-15-and-scorecard-for-iphone-available/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://lindsve.net/2009/01/scorecard-15-and-scorecard-for-iphone-available/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Scorecard for Windows is now available!]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/-CN-FHw5RA8/" />
		<id>http://lindsve.net/2008/02/15/scorecard-for-windows-is-now-available/</id>
		<updated>2009-01-09T10:42:25Z</updated>
		<published>2008-02-15T10:09:14Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="Projects" />		<summary type="html"><![CDATA[For the last few months I've been busy working on a Windows port of Scorecard, a golf statistics application which previously was Mac only. I am happy to say that the Windows version is finally available for download and purchase!
This is what Alan Olson, one of the staff members of The Sand Trap has to [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2008/02/scorecard-for-windows-is-now-available/"><![CDATA[<p>For the last few months I've been busy working on a Windows port of <a href="http://cynicalpeak.com/scorecard">Scorecard</a>, a golf statistics application which previously was Mac only. I am happy to say that the Windows version is finally available for download and purchase!</p>
<p>This is what Alan Olson, one of the staff members of The Sand Trap has to say about Scorecard:</p>
<blockquote><p>If you are serious about improving your golf game but not sure which areas need the most work, Scorecard is an excellent and easy to use application to help you identify your problem areas. I've created my own tracking spreadsheets and used several online services in the past but Scorecard blows all of those away by just ease of use and the data generated really shows you quickly what you need to work on. For us Windows folks, this is great day!      </p>
<p>If you love to analyze your golf game and want to improve you should seriously take a look at Scorecard.</p>
</blockquote>
<div class="simpletags">Technorati Tags: <a href="http://technorati.com/tag/golf" rel="tag">golf</a>, <a href="http://technorati.com/tag/statistics" rel="tag">statistics</a>, <a href="http://technorati.com/tag/windows" rel="tag">windows</a></div>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2008/02/scorecard-for-windows-is-now-available/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2008/02/scorecard-for-windows-is-now-available/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://lindsve.net/2008/02/scorecard-for-windows-is-now-available/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>Geir-Tore Lindsve</name>
						<uri>http://lindsve.net</uri>
					</author>
		<title type="html"><![CDATA[Candidatus Informationis Technologiae]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/lindsve/~3/c3_aLOKQkEA/" />
		<id>http://lindsve.net/2006/11/10/candidatus-informationis-technologiae/</id>
		<updated>2006-11-10T14:50:16Z</updated>
		<published>2006-11-10T14:50:16Z</published>
		<category scheme="http://lindsve.net" term="Blog" /><category scheme="http://lindsve.net" term="Artificial Intelligence" /><category scheme="http://lindsve.net" term="Projects" />		<summary type="html"><![CDATA[Yesterday, I was back in Copenhagen and took the final exam for my thesis and can now officially say that I am a Master of Science in Information Technology, Software Development.
Our supervisor and the censor was impressed by the developed tool/library, stating that it showed good knowledge about the theoretic aspects of configuration problems, and [...]]]></summary>
		<content type="html" xml:base="http://lindsve.net/2006/11/candidatus-informationis-technologiae/"><![CDATA[<p>Yesterday, I was back in Copenhagen and took the final exam for my thesis and can now officially say that I am a Master of Science in Information Technology, Software Development.</p>
<p>Our supervisor and the censor was impressed by the developed tool/library, stating that it showed good knowledge about the theoretic aspects of configuration problems, and that we had a very good objective oriented approach on our product. We were set back a bit though by the report which was a bit vague on the explanations at times. Overall, we are satisfied with the result and thrilled by finally being done with it <img src='http://lindsve.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Our thesis project, CLab#, will be utilized at the IT University of Copenhagen for teaching about constraint programming and configuration problem handling, and our supervisor will be the maintainer of the tool from now on. The tool will be available online soon.</p>
<div class="simpletags">Technorati Tags: <a href="http://technorati.com/tag/ai" rel="tag">ai</a>, <a href="http://technorati.com/tag/constraint+programming" rel="tag">constraint programming</a>, <a href="http://technorati.com/tag/binary+decision+diagrams" rel="tag"> binary decision diagrams</a>, <a href="http://technorati.com/tag/configuration+problems" rel="tag"> configuration problems</a></div>
]]></content>
		<link rel="replies" type="text/html" href="http://lindsve.net/2006/11/candidatus-informationis-technologiae/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://lindsve.net/2006/11/candidatus-informationis-technologiae/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://lindsve.net/2006/11/candidatus-informationis-technologiae/</feedburner:origLink></entry>
	</feed>
