<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Peli's Farm</title>
    <link>http://blog.dotnetwiki.org/</link>
    <description>Pex, QuickGraph, MbUnit, Reflector Addins</description>
    <language>en-us</language>
    <copyright>Jonathan de Halleux</copyright>
    <lastBuildDate>Tue, 02 Dec 2008 20:53:26 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>jonathan.dehalleux@gmail.com</managingEditor>
    <webMaster>jonathan.dehalleux@gmail.com</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PelisFarm" type="application/rss+xml" /><item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=4d67996c-ca6c-4006-bf2f-09c5e16d544a</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,4d67996c-ca6c-4006-bf2f-09c5e16d544a.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,4d67996c-ca6c-4006-bf2f-09c5e16d544a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=4d67996c-ca6c-4006-bf2f-09c5e16d544a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Very exciting, I just published my first video on channel9. In the future, I’ll posting
more interviews about researchers and projects that happens in our group in Redmond.
Expect to get more videos on <a target="_blank" href="http://research.microsoft.com/pex">Pex</a>,
Code Contracts, CHESS, etc… over there. 
</p>
        <p>
          <a title="http://channel9.msdn.com/posts/Peli/The-RiSE-of-Research-in-Software-Engineering/" href="http://channel9.msdn.com/posts/Peli/The-RiSE-of-Research-in-Software-Engineering/">http://channel9.msdn.com/posts/Peli/The-RiSE-of-Research-in-Software-Engineering/</a>
        </p>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=4d67996c-ca6c-4006-bf2f-09c5e16d544a" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>My first Channel9 video (behind the camera)</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,4d67996c-ca6c-4006-bf2f-09c5e16d544a.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/472852499/MyFirstChannel9VideoBehindTheCamera.aspx</link>
      <pubDate>Tue, 02 Dec 2008 20:53:26 GMT</pubDate>
      <description>&lt;p&gt;
Very exciting, I just published my first video on channel9. In the future, I’ll posting
more interviews about researchers and projects that happens in our group in Redmond.
Expect to get more videos on &lt;a target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt;,
Code Contracts, CHESS, etc… over there. 
&lt;/p&gt;
&lt;p&gt;
&lt;a title="http://channel9.msdn.com/posts/Peli/The-RiSE-of-Research-in-Software-Engineering/" href="http://channel9.msdn.com/posts/Peli/The-RiSE-of-Research-in-Software-Engineering/"&gt;http://channel9.msdn.com/posts/Peli/The-RiSE-of-Research-in-Software-Engineering/&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=4d67996c-ca6c-4006-bf2f-09c5e16d544a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,4d67996c-ca6c-4006-bf2f-09c5e16d544a.aspx</comments>
    <feedburner:origLink>http://blog.dotnetwiki.org/MyFirstChannel9VideoBehindTheCamera.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=e850bb43-1436-4028-a48c-36ffff479c02</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,e850bb43-1436-4028-a48c-36ffff479c02.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,e850bb43-1436-4028-a48c-36ffff479c02.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=e850bb43-1436-4028-a48c-36ffff479c02</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We just published a tutorial on the code digger on CodeProject, enjoy…
</p>
        <blockquote>
          <p>
            <a title="http://www.codeproject.com/KB/testing/pex.aspx" href="http://www.codeproject.com/KB/testing/pex.aspx">http://www.codeproject.com/KB/testing/pex.aspx</a>
          </p>
        </blockquote>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=e850bb43-1436-4028-a48c-36ffff479c02" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>Pex: Code Digger in the CodeProject.Com</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,e850bb43-1436-4028-a48c-36ffff479c02.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/465157430/PexCodeDiggerInTheCodeProjectCom.aspx</link>
      <pubDate>Tue, 25 Nov 2008 16:13:29 GMT</pubDate>
      <description>&lt;p&gt;
We just published a tutorial on the code digger on CodeProject, enjoy…
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a title="http://www.codeproject.com/KB/testing/pex.aspx" href="http://www.codeproject.com/KB/testing/pex.aspx"&gt;http://www.codeproject.com/KB/testing/pex.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=e850bb43-1436-4028-a48c-36ffff479c02" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,e850bb43-1436-4028-a48c-36ffff479c02.aspx</comments>
      <category>Pex</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/PexCodeDiggerInTheCodeProjectCom.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=bd6c978a-e46c-4abf-8f7c-089b10e7c4fa</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,bd6c978a-e46c-4abf-8f7c-089b10e7c4fa.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,bd6c978a-e46c-4abf-8f7c-089b10e7c4fa.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=bd6c978a-e46c-4abf-8f7c-089b10e7c4fa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We will give a session on <a target="_blank" href="http://research.microsoft.com/pex">Pex</a> at
the <a target="_blank" href="https://seattle.codecamp.us"><strong>Seattle Code Camp</strong></a><strong> –
Saturday 11/15 at 2.45pm. </strong>We will show the new <a target="_blank" href="http://blogs.msdn.com/nikolait/archive/2008/10/21/sneak-preview-code-digger-the-new-pex-experience.aspx">Code
Digger</a> and how Pex can help you…
</p>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=bd6c978a-e46c-4abf-8f7c-089b10e7c4fa" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>Pex at the Seattle Code Camp &amp;ndash; this Saturday at 2.45pm</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,bd6c978a-e46c-4abf-8f7c-089b10e7c4fa.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/453380121/PexAtTheSeattleCodeCampNdashThisSaturdayAt245pm.aspx</link>
      <pubDate>Fri, 14 Nov 2008 21:35:49 GMT</pubDate>
      <description>&lt;p&gt;
We will give a session on &lt;a target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt; at
the &lt;a target="_blank" href="https://seattle.codecamp.us"&gt;&lt;strong&gt;Seattle Code Camp&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; –
Saturday 11/15 at 2.45pm. &lt;/strong&gt;We will show the new &lt;a target="_blank" href="http://blogs.msdn.com/nikolait/archive/2008/10/21/sneak-preview-code-digger-the-new-pex-experience.aspx"&gt;Code
Digger&lt;/a&gt; and how Pex can help you…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=bd6c978a-e46c-4abf-8f7c-089b10e7c4fa" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,bd6c978a-e46c-4abf-8f7c-089b10e7c4fa.aspx</comments>
      <category>Pex</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/PexAtTheSeattleCodeCampNdashThisSaturdayAt245pm.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Check out the session on <a target="_blank" href="http://research.microsoft.com/contracts">Code
Contracts</a> and <a target="_blank" href="http://research.microsoft.com/pex">Pex</a> on
Channel 9. You will learn about the new cool API to express pre-conditions, post-conditions
and invariants in your favorite language – i.e. design by contracts (DbC) for .NET
and the new <a target="_blank" href="http://blogs.msdn.com/nikolait/archive/2008/10/21/sneak-preview-code-digger-the-new-pex-experience.aspx">Code
Digger</a> experience in Pex, and most importantly <strong>how DbC and Pex play well
together.</strong></p>
        <blockquote>
          <p>
            <a title="http://channel9.msdn.com/pdc2008/tl51/" href="http://channel9.msdn.com/pdc2008/tl51/">http://channel9.msdn.com/pdc2008/tl51/</a>
          </p>
        </blockquote>
        <p>
          <a href="http://blog.dotnetwiki.org/images/CodeDiggerSessiononChannel9_14324/image.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/CodeDiggerSessiononChannel9_14324/image_thumb.png" width="404" height="223" />
          </a>
        </p>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>Code Digger Session on Channel 9</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/444067840/CodeDiggerSessionOnChannel9.aspx</link>
      <pubDate>Thu, 06 Nov 2008 07:10:22 GMT</pubDate>
      <description>&lt;p&gt;
Check out the session on &lt;a target="_blank" href="http://research.microsoft.com/contracts"&gt;Code
Contracts&lt;/a&gt; and &lt;a target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt; on
Channel 9. You will learn about the new cool API to express pre-conditions, post-conditions
and invariants in your favorite language – i.e. design by contracts (DbC) for .NET
and the new &lt;a target="_blank" href="http://blogs.msdn.com/nikolait/archive/2008/10/21/sneak-preview-code-digger-the-new-pex-experience.aspx"&gt;Code
Digger&lt;/a&gt; experience in Pex, and most importantly &lt;strong&gt;how DbC and Pex play well
together.&lt;/strong&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a title="http://channel9.msdn.com/pdc2008/tl51/" href="http://channel9.msdn.com/pdc2008/tl51/"&gt;http://channel9.msdn.com/pdc2008/tl51/&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/CodeDiggerSessiononChannel9_14324/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/CodeDiggerSessiononChannel9_14324/image_thumb.png" width="404" height="223"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,1f98b2d2-011e-4ec8-bdf1-d6d23b0958e0.aspx</comments>
      <category>Pex;Testing</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/CodeDiggerSessionOnChannel9.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=ce514fa5-4be7-4bf4-9103-af45fbb5ca4b</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,ce514fa5-4be7-4bf4-9103-af45fbb5ca4b.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,ce514fa5-4be7-4bf4-9103-af45fbb5ca4b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=ce514fa5-4be7-4bf4-9103-af45fbb5ca4b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
        </p>
        <p>
I’ll be at the <a href="http://www.microsoftpdc.com/Agenda/UnSessions.aspx#msr-at-pdc">MSR@PDC</a> booth
the entire week, don’t forget to say hello and get your demo.
</p>
        <p>
          <a href="http://blog.dotnetwiki.org/images/PDC2008SeethediggeratthePexbooth_10F6C/image.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/PDC2008SeethediggeratthePexbooth_10F6C/image_thumb.png" width="404" height="192" />
          </a>
        </p>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=ce514fa5-4be7-4bf4-9103-af45fbb5ca4b" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>PDC 2008 &amp;ndash; See the digger at the Pex booth</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,ce514fa5-4be7-4bf4-9103-af45fbb5ca4b.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/432215565/PDC2008NdashSeeTheDiggerAtThePexBooth.aspx</link>
      <pubDate>Sun, 26 Oct 2008 02:29:17 GMT</pubDate>
      <description>&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
I’ll be at the &lt;a href="http://www.microsoftpdc.com/Agenda/UnSessions.aspx#msr-at-pdc"&gt;MSR@PDC&lt;/a&gt; booth
the entire week, don’t forget to say hello and get your demo.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/PDC2008SeethediggeratthePexbooth_10F6C/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/PDC2008SeethediggeratthePexbooth_10F6C/image_thumb.png" width="404" height="192"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=ce514fa5-4be7-4bf4-9103-af45fbb5ca4b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,ce514fa5-4be7-4bf4-9103-af45fbb5ca4b.aspx</comments>
    <feedburner:origLink>http://blog.dotnetwiki.org/PDC2008NdashSeeTheDiggerAtThePexBooth.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=68b05633-1ce2-4e69-bb0d-e975781b060d</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,68b05633-1ce2-4e69-bb0d-e975781b060d.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,68b05633-1ce2-4e69-bb0d-e975781b060d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=68b05633-1ce2-4e69-bb0d-e975781b060d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wonder what we’ve been up to for the last months… We’ve been building a very cool
development experience on top of Pex that we call <strong><em>Code Digging</em></strong>. <a target="_blank" href="http://blogs.msdn.com/nikolait/archive/2008/10/21/sneak-preview-code-digger-the-new-pex-experience.aspx">Check
out Nikolai’s blog post on what it means to <strong>you!       </strong>.</a></p>
        <p>
          <a href="http://blog.dotnetwiki.org/images/EntertheDigger_12D11/image.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/EntertheDigger_12D11/image_thumb.png" width="408" height="308" />
          </a>
        </p>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=68b05633-1ce2-4e69-bb0d-e975781b060d" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>Enter the Digger</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,68b05633-1ce2-4e69-bb0d-e975781b060d.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/428185719/EnterTheDigger.aspx</link>
      <pubDate>Wed, 22 Oct 2008 04:49:02 GMT</pubDate>
      <description>&lt;p&gt;
Wonder what we’ve been up to for the last months… We’ve been building a very cool
development experience on top of Pex that we call &lt;strong&gt;&lt;em&gt;Code Digging&lt;/em&gt;&lt;/strong&gt;. &lt;a target="_blank" href="http://blogs.msdn.com/nikolait/archive/2008/10/21/sneak-preview-code-digger-the-new-pex-experience.aspx"&gt;Check
out Nikolai’s blog post on what it means to &lt;strong&gt;you!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;.&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/EntertheDigger_12D11/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/EntertheDigger_12D11/image_thumb.png" width="408" height="308"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=68b05633-1ce2-4e69-bb0d-e975781b060d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,68b05633-1ce2-4e69-bb0d-e975781b060d.aspx</comments>
      <category>Pex;Testing</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/EnterTheDigger.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=c83452d0-33d7-4628-8855-957ed53a0a6b</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,c83452d0-33d7-4628-8855-957ed53a0a6b.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,c83452d0-33d7-4628-8855-957ed53a0a6b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=c83452d0-33d7-4628-8855-957ed53a0a6b</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <title>Pex It: The File System, Abstraction, Mocking , Modeling</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,c83452d0-33d7-4628-8855-957ed53a0a6b.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/427761473/PexItTheFileSystemAbstractionMockingModeling.aspx</link>
      <pubDate>Tue, 21 Oct 2008 19:15:09 GMT</pubDate>
      <description>&lt;p&gt;
Have you ever written code that directly used the .NET File APIs? We probably all
did although we knew it would make the code less testable and dependent on the file
system state. As bad as it sounds, it really requires a lot of discipline and work
to avoid this: one would need to create an abstraction layer over the file system,
which is not a short task (think long/tedious).
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: green"&gt;// in how many ways can this
break? &lt;/span&gt;&lt;span style="color: blue"&gt;public static void &lt;/span&gt;CleanDirectory(&lt;span style="color: blue"&gt;string &lt;/span&gt;path)
{ &lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Exists(path)) &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.Delete(path, &lt;span style="color: blue"&gt;true&lt;/span&gt;); &lt;span style="color: #2b91af"&gt;Directory&lt;/span&gt;.CreateDirectory(path);
} &lt;/pre&gt;
&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;Abstraction&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Fortunately, there always someone else who got motivated at some point. &lt;a target="_blank" href="http://www.ademiller.com/blogs/tech/2007/12/mocking-the-file-system/"&gt;Ade
Miller digged&lt;/a&gt; an abstraction of the File System, the &lt;a href="http://www.codeplex.com/CodePlexClient/SourceControl/FileView.aspx?itemId=59623&amp;changeSetId=17983"&gt;IFileSystem&lt;/a&gt; interface,
that &lt;a target="_blank" href="http://bradwilson.typepad.com/"&gt;Brad Wilson&lt;/a&gt; had
written for the CodePlex client project. Very nice since it provides a solid foundation
for cleanly abstracting from the File System, and thus increase the testability of
our code.
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;// a little better, testable
code at least&lt;br&gt;
public static void &lt;/span&gt;CleanDirectory(&lt;span style="color: #2b91af"&gt;IFileSystem &lt;/span&gt;fs, &lt;span style="color: blue"&gt;string &lt;/span&gt;path)
{ &lt;span style="color: blue"&gt;if &lt;/span&gt;(fs.DirectoryExists(path)) fs.DeleteDirectory(path, &lt;span style="color: blue"&gt;false&lt;/span&gt;);
fs.CreateDirectory(path); } &lt;/pre&gt;
&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;Mocking&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
So with this interface we can write code that we’ll be able to test in isolation from
the physical file system. That’s great but there is still a lot of work on the should
of the developer: the developer will have write intricate scenarios involving mocks
to simulate the different possible configurations of the file system. &lt;strong&gt;No matter
which mock framework &lt;/strong&gt;(&lt;a target="_blank" href="http://code.google.com/p/moq/"&gt;Moq&lt;/a&gt;, &lt;a target="_blank" href="http://ayende.com/projects/rhino-mocks.aspx"&gt;Rhino&lt;/a&gt;, &lt;a target="_blank" href="http://www.typemock.com/"&gt;Isolator&lt;/a&gt;,
…), he’ll be using, (1) it’s going to be painful, (2) he’ll miss cases. It’s probably
easy to write a single “happy path”, but especially with the file system there are
quite some realistic “unhappy paths”.
&lt;/p&gt;
&lt;p&gt;
This test case uses &lt;a target="_blank" href="http://code.google.com/p/moq/"&gt;Moq&lt;/a&gt; to
create the scenario where there is a directory already. Although Moq has a very slick
API to set expectations, it is still a lot of work to write this basic scenario. (And
what exactly is the meaning of “Expect”, the delegate or expression inside, “Returns”
and “Callback”?)
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;TestMethod&lt;/span&gt;] &lt;span style="color: blue"&gt;public
void &lt;/span&gt;DeletesAndCreateNewDirectory() { &lt;span style="color: blue"&gt;var &lt;/span&gt;fs
= &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Mock&lt;/span&gt;&lt;&lt;span style="color: #2b91af"&gt;IFileSystem&gt;&gt;(); &lt;span style="color: blue"&gt;string &lt;/span&gt;path
= &lt;span style="color: #a31515"&gt;"foo"&lt;/span&gt;; fs.Expect(f =&gt; f.DirectoryExists(path)).Returns(&lt;span style="color: blue"&gt;true&lt;/span&gt;);
fs.Expect(f =&gt; f.DeleteDirectory(path, &lt;span style="color: blue"&gt;false&lt;/span&gt;)).Callback(
() =&gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"deleted"&lt;/span&gt;));
fs.Expect(f =&gt; f.CreateDirectory(path)).Callback(() =&gt; &lt;span style="color: #2b91af"&gt;Console&lt;/span&gt;.WriteLine(&lt;span style="color: #a31515"&gt;"created"&lt;/span&gt;)); &lt;span style="color: #2b91af"&gt;DirectoryExtensions&lt;/span&gt;.CleanDirectory(fs.Object,
path); }&lt;/pre&gt;
&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
&lt;strong&gt;Modeling&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
We had our intern, &lt;a target="_blank" href="http://research.microsoft.com/Pex/people.aspx"&gt;Soonho
Kong&lt;/a&gt;, work on a&lt;strong&gt; Parameterized Model of the File System&lt;/strong&gt;, built
on top of the IFileSystem interface (yes that same interface Brad Wilson published
on CodePlex). We say that the model is parameterized because it uses the &lt;a target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt; &lt;a target="_blank" href="http://research.microsoft.com/projects/Pex/Wiki/pexchoose.html"&gt;choices&lt;/a&gt; API
to create arbitrary initial File System states; Pex “chooses” each such state (actually,
Pex carefully computes the state &lt;a target="_blank" href="http://research.microsoft.com/projects/z3"&gt;using
a constraint solver&lt;/a&gt;) to trigger different code paths in the code. You can think
of each choice as a new parameter to the test. Or to put this with an example: if
your code checks that the file “foo.txt” exists, then the parameterized model would &lt;em&gt;choose &lt;/em&gt;a
file system state that would contain a “foo.txt” file (or not, in another state, to
cover both branches of the program).
&lt;/p&gt;
&lt;p&gt;
So what does it mean for you? Well, the way you write tests that involve the file
system changes radically. You simply need to pass the file system &lt;strong&gt;model&lt;/strong&gt; to
your implementation. The model is an under-approximation of the real file system (which
means that we didn’t model every single nastiness that can occur when the moon is
full), but it definitely captures more practically relevant corner cases than we (humans)
usually think about. Let’s see this in the following test:
&lt;/p&gt;
&lt;blockquote&gt;&lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;PexMethod&lt;/span&gt;] &lt;span style="color: blue"&gt;public
void &lt;/span&gt;CleanDirectory() { &lt;span style="color: blue"&gt;var &lt;/span&gt;fs = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;PFileSystem&lt;/span&gt;(); &lt;span style="color: blue"&gt;string &lt;/span&gt;path
= &lt;span style="color: #a31515"&gt;@"\foo"&lt;/span&gt;; &lt;span style="color: blue"&gt;try &lt;/span&gt;{ &lt;span style="color: #2b91af"&gt;DirectoryExtensions&lt;/span&gt;.CleanDirectory(fs,
path); &lt;span style="color: green"&gt;// assert: the directory exists and is empty &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(fs.DirectoryExists(path)); &lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.AreEqual(0,
fs.GetFiles(path).Length); } &lt;span style="color: blue"&gt;finally &lt;/span&gt;{ fs.Dir();
} } &lt;/pre&gt;
&lt;/blockquote&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt; 
&lt;p&gt;
When we run Pex, we get 7 generated tests. In fact, Pex finds an interesting bug that
occurs when a file with the name of the directory to clean already exists. In the
Pex Exploration Results window, you can see a ‘dir’-like output of the file system
model associated with a particular test case (the fs.Dir() method call outputs that
text to the console which Pex captures).
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/PexFilesystemabstractingmockingModeling_C001/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/PexFilesystemabstractingmockingModeling_C001/image_thumb.png" width="778" height="234"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
This bug is the kind of corner-case that makes testing the file system so fun/hard.
Thanks to the parameterized model (and Soonho), we got it for free. Note also that
the assertion in our test is pretty powerful since it must be true for any configuration
of the file system (it almost smells like a functional specification to me):
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;span style="color: green"&gt;// assert: the directory exists and is empty 
&lt;br&gt;
&lt;/span&gt;&lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.IsTrue(fs.DirectoryExists(path)); 
&lt;br&gt;
&lt;span style="color: #2b91af"&gt;Assert&lt;/span&gt;.AreEqual(0, fs.GetFiles(path).Length); 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Happy modeling!
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;The full source of PFileSystem will be available in the next version of Pex (0.8)..&lt;/em&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=c83452d0-33d7-4628-8855-957ed53a0a6b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,c83452d0-33d7-4628-8855-957ed53a0a6b.aspx</comments>
      <category>Pex;Testing</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/PexItTheFileSystemAbstractionMockingModeling.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=b79434b2-6fa2-44ae-a69a-323af2e0f86f</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,b79434b2-6fa2-44ae-a69a-323af2e0f86f.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,b79434b2-6fa2-44ae-a69a-323af2e0f86f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=b79434b2-6fa2-44ae-a69a-323af2e0f86f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In this post, you’ll find the XSL stylesheets to render <a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms182409(VS.80).aspx">MSTest</a> 2008
reports to <a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET">CruiseControl.NET</a>.
CC.NET comes with stylesheets for MSTest 2005 but it seems that there were some changes
in the xml output or at least they did not work for me. Please refer to the <a target="_blank" href="http://ccnet.sourceforge.net/CCNET/XSL%20Report%20Build%20Plugin.html">CC.NET
documentation</a> on how to integrate them into your build.
</p>
        <p>
The templates are minimalistic since a deeper investigation can be done by importing
the .trx file into Visual Studio.
</p>
        <p>
The summary view:
</p>
        <p>
          <a href="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image_thumb.png" width="644" height="85" />
          </a>
        </p>
        <p>
And the details view:
</p>
        <p>
          <a href="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image_3.png">
            <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image_thumb_3.png" width="644" height="230" />
          </a>
        </p>
        <p>
Downloads – "AS IS" with no warranties, and confers no rights – : 
</p>
        <ul>
          <li>
            <a href="http://blog.dotnetwiki.org/content/binary/mstestreport2008.xslt">mstestreport2008.xslt
(3.53 KB)</a>
          </li>
          <li>
            <a href="http://blog.dotnetwiki.org/content/binary/mstestsummary2008.xslt">mstestsummary2008.xslt
(3.1 KB)</a>
          </li>
        </ul>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=b79434b2-6fa2-44ae-a69a-323af2e0f86f" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>MSTest 2008 Reports for CruiseControl.NET</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,b79434b2-6fa2-44ae-a69a-323af2e0f86f.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/423894995/MSTest2008ReportsForCruiseControlNET.aspx</link>
      <pubDate>Fri, 17 Oct 2008 17:28:51 GMT</pubDate>
      <description>&lt;p&gt;
In this post, you’ll find the XSL stylesheets to render &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms182409(VS.80).aspx"&gt;MSTest&lt;/a&gt; 2008
reports to &lt;a target="_blank" href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET"&gt;CruiseControl.NET&lt;/a&gt;.
CC.NET comes with stylesheets for MSTest 2005 but it seems that there were some changes
in the xml output or at least they did not work for me. Please refer to the &lt;a target="_blank" href="http://ccnet.sourceforge.net/CCNET/XSL%20Report%20Build%20Plugin.html"&gt;CC.NET
documentation&lt;/a&gt; on how to integrate them into your build.
&lt;/p&gt;
&lt;p&gt;
The templates are minimalistic since a deeper investigation can be done by importing
the .trx file into Visual Studio.
&lt;/p&gt;
&lt;p&gt;
The summary view:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image_thumb.png" width="644" height="85"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
And the details view:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/MSTest2008ReportsforCruiseControl.NET_90F9/image_thumb_3.png" width="644" height="230"&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
Downloads – "AS IS" with no warranties, and confers no rights – : 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://blog.dotnetwiki.org/content/binary/mstestreport2008.xslt"&gt;mstestreport2008.xslt
(3.53 KB)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://blog.dotnetwiki.org/content/binary/mstestsummary2008.xslt"&gt;mstestsummary2008.xslt
(3.1 KB)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=b79434b2-6fa2-44ae-a69a-323af2e0f86f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,b79434b2-6fa2-44ae-a69a-323af2e0f86f.aspx</comments>
      <category>Pex</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/MSTest2008ReportsForCruiseControlNET.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=71be9c18-16f4-4dd5-9ed2-310f73f391da</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,71be9c18-16f4-4dd5-9ed2-310f73f391da.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,71be9c18-16f4-4dd5-9ed2-310f73f391da.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=71be9c18-16f4-4dd5-9ed2-310f73f391da</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <title>Pex gets a Stubs framework (I said stubs, not mocks)</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,71be9c18-16f4-4dd5-9ed2-310f73f391da.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/419582194/PexGetsAStubsFrameworkISaidStubsNotMocks.aspx</link>
      <pubDate>Mon, 13 Oct 2008 15:07:23 GMT</pubDate>
      <description>&lt;p&gt;
In any unit testing activity, there always comes a point when one needs to isolate
the code under test from the environment. This usually involves adding interfaces
at the environment boundaries, which can be used to test the code in isolation. Because
implementing those interfaces ‘by hand’ for the test can be tedious, an ecosystem
of mock frameworks has flourished (&lt;a href="http://nmock.org/"&gt;NMock&lt;/a&gt;, &lt;a href="http://ayende.com/projects/rhino-mocks.aspx"&gt;Rhino
Mocks&lt;/a&gt;, &lt;a href="http://code.google.com/p/moq/"&gt;Moq&lt;/a&gt;, there’s more…). In fact,
it’s a pretty competitive area. 
&lt;p&gt;
&lt;strong&gt;The dark side of Mocks frameworks&lt;/strong&gt; 
&lt;p&gt;
Under their friendly API, mock frameworks usually hide a complex machinery: dynamic
code (through Reflection.Emit or a rewriting profiler), expression trees or reflection. 
&lt;p&gt;
From a &lt;a target="_blank" href="http://research.microsoft.com/pex"&gt;Pex&lt;/a&gt; point of
view, this ‘machinery’ puts a large burden on the dynamic whitebox code analysis;
Pex does a precise data flow and control analysis for &lt;em&gt;any&lt;/em&gt; code that is executed,
this means that it also has to analyze the mock infrastructure.&amp;nbsp;&amp;nbsp; 
&lt;p&gt;
Therefore, we decided to build a framework to define stubs that would try to avoid
the overhead of dynamic code generation (&lt;em&gt;just &lt;/em&gt;rely on source code) and still
provide the same level of flexibility of existing mock frameworks: defining the behavior
of the stub inside the test, strongly typed, intellisense support, first-class debugging
experience, etc… 
&lt;p&gt;
&lt;strong&gt;Low tech Stubs using delegates&lt;/strong&gt; 
&lt;p&gt;
With C# 3.0 lambdas, it is quite easy to define delegates. Therefore, delegates seemed
an elegant and simple way for building stub methods (&lt;a href="http://www.clariusconsulting.net/blogs/kzu/archive/2007/12/21/47152.aspx"&gt;we’re
not the first ones to think about this&lt;/a&gt;). For example, a stub of the IServiceProvider
would simply be &lt;blockquote&gt; 
&lt;p&gt;
class SServiceProvider : IServiceProvider {&lt;br&gt;
&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // this field can be set to ‘override’ the behavior of
GetService&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; public Func&lt;type , object&gt;
GetServiceHandler;
&lt;/strong&gt;&lt;b&gt;
&lt;br&gt;
&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; object IServiceProvider.GetService(Type type) {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;var d = this.GetServiceHandler;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (d != null) return d(type); // i’m stubbed
:)&lt;br&gt;
&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else throw new NotImplementedException();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
} 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Enter the &lt;em&gt;Stubs&lt;/em&gt; framework&lt;/strong&gt; 
&lt;p&gt;
We took this simple idea and turned it into &lt;strong&gt;the &lt;em&gt;Stubs&lt;/em&gt; framework.&lt;/strong&gt; The
Stubs framework comes as a enhanced single file generator for Visual Studio which
generates stubs for selected assemblies. Special attention was paid to make sure the
code generation did not get into the feet for the unit test writer (we track the build
events and regenerate when needed). 
&lt;p&gt;
More about stubs can be found at &lt;a href="http://research.microsoft.com/pex/articles/stubs.pdf"&gt;http://research.microsoft.com/pex/articles/stubs.pdf&lt;/a&gt;.
This is a preview of what’s coming up on the next release of Pex at the end of the
month. 
&lt;p&gt;
Happy stubbing.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=71be9c18-16f4-4dd5-9ed2-310f73f391da" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,71be9c18-16f4-4dd5-9ed2-310f73f391da.aspx</comments>
    <feedburner:origLink>http://blog.dotnetwiki.org/PexGetsAStubsFrameworkISaidStubsNotMocks.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.dotnetwiki.org/Trackback.aspx?guid=addb0c31-49b9-4d2a-b684-817774b90d43</trackback:ping>
      <pingback:server>http://blog.dotnetwiki.org/pingback.aspx</pingback:server>
      <pingback:target>http://blog.dotnetwiki.org/PermaLink,guid,addb0c31-49b9-4d2a-b684-817774b90d43.aspx</pingback:target>
      <dc:creator>Jonathan de Halleux</dc:creator>
      <wfw:comment>http://blog.dotnetwiki.org/CommentView,guid,addb0c31-49b9-4d2a-b684-817774b90d43.aspx</wfw:comment>
      <wfw:commentRss>http://blog.dotnetwiki.org/SyndicationService.asmx/GetEntryCommentsRss?guid=addb0c31-49b9-4d2a-b684-817774b90d43</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
We are very excited to announce that <a target="_blank" href="http://research.microsoft.com/pex"><strong>Pex</strong></a> has
a session at <a target="_blank" href="http://www.microsoftpdc.com/">PDC 2008</a>.
We will be talking about code contracts and Pex, and how they play nicely together. <a target="_blank" href="http://sessions.microsoftpdc.com/">Book
it now in your conference agenda!!!</a> (look ‘Research’ or ‘Pex’ in the session list).
</p>
        <blockquote>
          <p>
            <a href="http://blog.dotnetwiki.org/images/PexatPDC2008Wewillbethere_D792/image.png">
              <img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/PexatPDC2008Wewillbethere_D792/image_thumb.png" width="482" height="366" />
            </a> 
</p>
        </blockquote>
        <p>
See you there and don’t forget to swing by our booth.
</p>
        <img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=addb0c31-49b9-4d2a-b684-817774b90d43" />
        <br />
        <hr />
This posting is provided "AS IS" with no warranties, and confers no rights.</body>
      <title>Pex at PDC2008 &amp;ndash; We will be there!</title>
      <guid isPermaLink="false">http://blog.dotnetwiki.org/PermaLink,guid,addb0c31-49b9-4d2a-b684-817774b90d43.aspx</guid>
      <link>http://feeds.feedburner.com/~r/PelisFarm/~3/409962530/PexAtPDC2008NdashWeWillBeThere.aspx</link>
      <pubDate>Fri, 03 Oct 2008 05:42:09 GMT</pubDate>
      <description>&lt;p&gt;
We are very excited to announce that &lt;a target="_blank" href="http://research.microsoft.com/pex"&gt;&lt;strong&gt;Pex&lt;/strong&gt;&lt;/a&gt; has
a session at &lt;a target="_blank" href="http://www.microsoftpdc.com/"&gt;PDC 2008&lt;/a&gt;.
We will be talking about code contracts and Pex, and how they play nicely together. &lt;a target="_blank" href="http://sessions.microsoftpdc.com/"&gt;Book
it now in your conference agenda!!!&lt;/a&gt; (look ‘Research’ or ‘Pex’ in the session list).
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;a href="http://blog.dotnetwiki.org/images/PexatPDC2008Wewillbethere_D792/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blog.dotnetwiki.org/images/PexatPDC2008Wewillbethere_D792/image_thumb.png" width="482" height="366"&gt;&lt;/a&gt;&amp;nbsp;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
See you there and don’t forget to swing by our booth.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.dotnetwiki.org/aggbug.ashx?id=addb0c31-49b9-4d2a-b684-817774b90d43" /&gt;
&lt;br /&gt;
&lt;hr /&gt;This posting is provided "AS IS" with no warranties, and confers no rights.</description>
      <comments>http://blog.dotnetwiki.org/CommentView,guid,addb0c31-49b9-4d2a-b684-817774b90d43.aspx</comments>
      <category>MbUnit;Pex;Testing</category>
    <feedburner:origLink>http://blog.dotnetwiki.org/PexAtPDC2008NdashWeWillBeThere.aspx</feedburner:origLink></item>
  </channel>
</rss>
