<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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/" version="2.0">
  <channel>
    <title>Tim Barcz - Rhino Mocks</title>
    <link>http://www.timbarcz.com/blog/</link>
    <description>My Code is My Craft</description>
    <image>
      <url>http://www.timbarcz.com/blog/content/binary/channelImage.jpg</url>
      <title>Tim Barcz - Rhino Mocks</title>
      <link>http://www.timbarcz.com/blog/</link>
    </image>
    <language>en-us</language>
    <copyright>Tim Barcz</copyright>
    <lastBuildDate>Fri, 20 Mar 2009 04:01:26 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>blog@timbarcz.com</managingEditor>
    <webMaster>blog@timbarcz.com</webMaster>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=035917dc-7c8b-40ac-b40b-6b2461707481</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,035917dc-7c8b-40ac-b40b-6b2461707481.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,035917dc-7c8b-40ac-b40b-6b2461707481.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=035917dc-7c8b-40ac-b40b-6b2461707481</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you're serious about testing before long you'll bump into the need to do some mocking.
You can of course chose to write your own mocks but that is hardly time effective
or trivial.  More than likely you'll want to use a framework, but how do you
choose between the most popular options?
</p>
        <p>
There's been some discussion on <a href="http://www.twitter.com">Twitter</a> between <a href="http://www.twitter.com/timbarcz">myself</a> and <a href="http://www.clariusconsulting.net/blogs/kzu/">Daniel
Cazzulino</a><a href="http://www.twitter.com">(@kzu</a>), the creator of <a href="http://code.google.com/p/moq/">Moq</a> (pronounced
"Mock-you" or just "Mock"), a newer and popular .NET mocking,
about mocking frameworks and what goes into choosing a mocking framework.  Daniel
and I share a passion in mocking and by extension testing.  As the creator of
Moq, I hold him in very high regard.
</p>
        <p>
The discussion centered around some work that <a href="http://codevanced.net/">Andrew
Kazyrevich</a> has been doing recently.  Andrew is <a href="http://www.google.com/search?q=define%3Aardour">passionate</a> about
mocking.  As such he's created an <a href="http://code.google.com/p/mocking-frameworks-compare">open
source project</a> which compares the "big dawgs" of .NET mocking frameworks. 
In his <a href="http://codevanced.net/post/Mocking-Frameworks-Compare.aspx">introductory
post</a> he explains the intent, which is message I support and want to help spread:
</p>
        <blockquote>
          <p>
I've started a small open source project. It provides a unified set of tests written
against Moq, NMock2, Rhino Mocks and Typemock Isolator, so that you can easily compare
the frameworks and make an informed decision when picking one up. 
</p>
        </blockquote>
        <p>
In Andrew's <a href="http://codevanced.net/post/To-kill-a-mockingbird.aspx">most recent
post</a> he compares the execution time of the various frameworks.  My response
on the <a href="http://groups.google.com/group/RhinoMocks/browse_thread/thread/2f3bfbe688d95ae0">RhinoMocks
mailing list</a> was terse but sincere:
</p>
        <blockquote>
          <p>
Curious about speed in your tests, is the a first level concern when choosing a testing
framework?
</p>
        </blockquote>
        <p>
Daniel answered the question in a <a href="http://twitter.com/kzu/status/1354114894">tweet</a>:
</p>
        <blockquote>
          <p>
IMO, API design, usability and expressiveness is a much more valuable comparison.
#moq is not optimized for runtime perf.
</p>
        </blockquote>
        <p>
To which <a href="http://twitter.com/TimBarcz/statuses/1354369248">I responded</a>:
</p>
        <blockquote>
          <p>
I would also throw in documentation, discoverability, and community into your equation.
</p>
        </blockquote>
        <p>
So, fine blog reader, I have a question for you.  If you are using a mocking
framework, what are your first-level concerns when you chose your framework? 
For those who have yet to utilize a framework, what will you base your decision on
when you do choose?
</p>
        <ul>
          <li>
Execution Speed</li>
          <li>
API Design</li>
          <li>
Usability</li>
          <li>
Expressiveness</li>
          <li>
Documentation</li>
          <li>
Discoverability (possibly coincides with API Design)</li>
          <li>
Community</li>
          <li>
Other?</li>
        </ul>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=035917dc-7c8b-40ac-b40b-6b2461707481" />
      </body>
      <title>Choosing A Mocking Framework</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,035917dc-7c8b-40ac-b40b-6b2461707481.aspx</guid>
      <link>http://www.timbarcz.com/blog/ChoosingAMockingFramework.aspx</link>
      <pubDate>Fri, 20 Mar 2009 04:01:26 GMT</pubDate>
      <description>&lt;p&gt;
If you're serious about testing before long you'll bump into the need to do some mocking.
You can of course chose to write your own mocks but that is hardly time effective
or trivial.&amp;#160; More than likely you'll want to use a framework, but how do you
choose between the most popular options?
&lt;/p&gt;
&lt;p&gt;
There's been some discussion on &lt;a href="http://www.twitter.com"&gt;Twitter&lt;/a&gt; between &lt;a href="http://www.twitter.com/timbarcz"&gt;myself&lt;/a&gt; and &lt;a href="http://www.clariusconsulting.net/blogs/kzu/"&gt;Daniel
Cazzulino&lt;/a&gt; &lt;a href="http://www.twitter.com"&gt;(@kzu&lt;/a&gt;), the creator of &lt;a href="http://code.google.com/p/moq/"&gt;Moq&lt;/a&gt; (pronounced
&amp;quot;Mock-you&amp;quot; or just &amp;quot;Mock&amp;quot;), a newer and popular .NET mocking,
about mocking frameworks and what goes into choosing a mocking framework.&amp;#160; Daniel
and I share a passion in mocking and by extension testing.&amp;#160; As the creator of
Moq, I hold him in very high regard.
&lt;/p&gt;
&lt;p&gt;
The discussion centered around some work that &lt;a href="http://codevanced.net/"&gt;Andrew
Kazyrevich&lt;/a&gt; has been doing recently.&amp;#160; Andrew is &lt;a href="http://www.google.com/search?q=define%3Aardour"&gt;passionate&lt;/a&gt; about
mocking.&amp;#160; As such he's created an &lt;a href="http://code.google.com/p/mocking-frameworks-compare"&gt;open
source project&lt;/a&gt; which compares the &amp;quot;big dawgs&amp;quot; of .NET mocking frameworks.&amp;#160;
In his &lt;a href="http://codevanced.net/post/Mocking-Frameworks-Compare.aspx"&gt;introductory
post&lt;/a&gt; he explains the intent, which is message I support and want to help spread:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I've started a small open source project. It provides a unified set of tests written
against Moq, NMock2, Rhino Mocks and Typemock Isolator, so that you can easily compare
the frameworks and make an informed decision when picking one up. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
In Andrew's &lt;a href="http://codevanced.net/post/To-kill-a-mockingbird.aspx"&gt;most recent
post&lt;/a&gt; he compares the execution time of the various frameworks.&amp;#160; My response
on the &lt;a href="http://groups.google.com/group/RhinoMocks/browse_thread/thread/2f3bfbe688d95ae0"&gt;RhinoMocks
mailing list&lt;/a&gt; was terse but sincere:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Curious about speed in your tests, is the a first level concern when choosing a testing
framework?
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Daniel answered the question in a &lt;a href="http://twitter.com/kzu/status/1354114894"&gt;tweet&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
IMO, API design, usability and expressiveness is a much more valuable comparison.
#moq is not optimized for runtime perf.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
To which &lt;a href="http://twitter.com/TimBarcz/statuses/1354369248"&gt;I responded&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I would also throw in documentation, discoverability, and community into your equation.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
So, fine blog reader, I have a question for you.&amp;#160; If you are using a mocking
framework, what are your first-level concerns when you chose your framework?&amp;#160;
For those who have yet to utilize a framework, what will you base your decision on
when you do choose?
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Execution Speed&lt;/li&gt;
&lt;li&gt;
API Design&lt;/li&gt;
&lt;li&gt;
Usability&lt;/li&gt;
&lt;li&gt;
Expressiveness&lt;/li&gt;
&lt;li&gt;
Documentation&lt;/li&gt;
&lt;li&gt;
Discoverability (possibly coincides with API Design)&lt;/li&gt;
&lt;li&gt;
Community&lt;/li&gt;
&lt;li&gt;
Other?&lt;/li&gt;
&lt;/ul&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=035917dc-7c8b-40ac-b40b-6b2461707481" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,035917dc-7c8b-40ac-b40b-6b2461707481.aspx</comments>
      <category>Open Source Software</category>
      <category>Rhino Mocks</category>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=64d5e13b-9265-4327-9ab8-8a681ed545d6</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,64d5e13b-9265-4327-9ab8-8a681ed545d6.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,64d5e13b-9265-4327-9ab8-8a681ed545d6.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=64d5e13b-9265-4327-9ab8-8a681ed545d6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
People sometimes ask how to get involved in open source software.  In fact <a href="http://www.hanselman.com">Scott
Hanselman</a> posted on a the subject in great detail over two years ago when detailed <a href="http://www.hanselman.com/blog/ExampleHowToContributeAPatchToAnOpenSourceProjectLikeDasBlog.aspx">how
you could submit a patch to an open source project</a>.  Good intentions aside,
getting involved at the source code level of a mature open source project can be quite
daunting. There is a often large, hopefully active, codebase which you might not be
too familiar with. Despite your sincere interest in contributing, often the startup
"cost" is too great and you find that there is a sense of hopelessness in
achieving that goal.  It really doesn't have to be this way.
</p>
        <p>
I'd like to suggest that a great way to getting started with open source is getting
involved in the mailing list for a project by answering questions posted by the community. 
Nearly all, if not all, of the open source projects I use have either a forum or a
mailing list associated with them. 
</p>
        <h2>My History in Open Source
</h2>
        <p>
Despite my use and open support of open source software I have to date only submitted
2.5 patches to the open source community (the 1/2 patch was me assisting in <a href="http://www.timbarcz.com/blog/2008/02/25/RegularExpressionsYourJobRequiresThem.aspx">writing
a RegularExpression</a> for the developer who was actually writing the meat of the
patch).  Despite my best intentions, I have yet to know an open source codebase
well enough in my opinion to submit substantive contributions to the project, so I
do my best to contribute in other ways.
</p>
        <p>
I am currently an active participant on the <a href="http://ayende.com/projects/rhino-mocks.aspx">RhinoMocks</a> mailing
list where I try to provide answers and guidance on RhinoMocks and testing in general. 
When I made the decision to start contributing on the list, my goal was simply to
beat <a href="http://ayende.com">Ayende</a> every once in awhile to the answer...seriously,
the guy is fast. As I've spent some time on the list I've become more comfortable
answering questions and I've seen others jump in and help as well.  I like to
think that I'm contributing to the project as a whole, if only by answering questions
posed by other users of the framework. Often times, in the absence of others to assist,
answering questions falls to the contributors of the project which takes away from
the time they would have to further the development of the project.
</p>
        <p>
If you've had a desire or an interest in getting involved and you aren't comfortable
contributing via source code, think about getting involved with a project you already
use and are familiar with.  Subscribe to the forum and mailing list and challenge
yourself to answer a single question, then two or three. I think you'll find that
the managers of these projects will be very appreciative of the help!
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=64d5e13b-9265-4327-9ab8-8a681ed545d6" />
      </body>
      <title>Contributing to Open Source Without Committing a Line Of Code</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,64d5e13b-9265-4327-9ab8-8a681ed545d6.aspx</guid>
      <link>http://www.timbarcz.com/blog/ContributingToOpenSourceWithoutCommittingALineOfCode.aspx</link>
      <pubDate>Sun, 25 Jan 2009 05:09:35 GMT</pubDate>
      <description>&lt;p&gt;
People sometimes ask how to get involved in open source software.&amp;#160; In fact &lt;a href="http://www.hanselman.com"&gt;Scott
Hanselman&lt;/a&gt; posted on a the subject in great detail over two years ago when detailed &lt;a href="http://www.hanselman.com/blog/ExampleHowToContributeAPatchToAnOpenSourceProjectLikeDasBlog.aspx"&gt;how
you could submit a patch to an open source project&lt;/a&gt;.&amp;#160; Good intentions aside,
getting involved at the source code level of a mature open source project can be quite
daunting. There is a often large, hopefully active, codebase which you might not be
too familiar with. Despite your sincere interest in contributing, often the startup
&amp;quot;cost&amp;quot; is too great and you find that there is a sense of hopelessness in
achieving that goal.&amp;#160; It really doesn't have to be this way.
&lt;/p&gt;
&lt;p&gt;
I'd like to suggest that a great way to getting started with open source is getting
involved in the mailing list for a project by answering questions posted by the community.&amp;#160;
Nearly all, if not all, of the open source projects I use have either a forum or a
mailing list associated with them. 
&lt;/p&gt;
&lt;h2&gt;My History in Open Source
&lt;/h2&gt;
&lt;p&gt;
Despite my use and open support of open source software I have to date only submitted
2.5 patches to the open source community (the 1/2 patch was me assisting in &lt;a href="http://www.timbarcz.com/blog/2008/02/25/RegularExpressionsYourJobRequiresThem.aspx"&gt;writing
a RegularExpression&lt;/a&gt; for the developer who was actually writing the meat of the
patch).&amp;#160; Despite my best intentions, I have yet to know an open source codebase
well enough in my opinion to submit substantive contributions to the project, so I
do my best to contribute in other ways.
&lt;/p&gt;
&lt;p&gt;
I am currently an active participant on the &lt;a href="http://ayende.com/projects/rhino-mocks.aspx"&gt;RhinoMocks&lt;/a&gt; mailing
list where I try to provide answers and guidance on RhinoMocks and testing in general.&amp;#160;
When I made the decision to start contributing on the list, my goal was simply to
beat &lt;a href="http://ayende.com"&gt;Ayende&lt;/a&gt; every once in awhile to the answer...seriously,
the guy is fast. As I've spent some time on the list I've become more comfortable
answering questions and I've seen others jump in and help as well.&amp;#160; I like to
think that I'm contributing to the project as a whole, if only by answering questions
posed by other users of the framework. Often times, in the absence of others to assist,
answering questions falls to the contributors of the project which takes away from
the time they would have to further the development of the project.
&lt;/p&gt;
&lt;p&gt;
If you've had a desire or an interest in getting involved and you aren't comfortable
contributing via source code, think about getting involved with a project you already
use and are familiar with.&amp;#160; Subscribe to the forum and mailing list and challenge
yourself to answer a single question, then two or three. I think you'll find that
the managers of these projects will be very appreciative of the help!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=64d5e13b-9265-4327-9ab8-8a681ed545d6" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,64d5e13b-9265-4327-9ab8-8a681ed545d6.aspx</comments>
      <category>Open Source Software</category>
      <category>Rhino Mocks</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IowaCodeCampNovember8_1421C/image_2.png">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="122" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IowaCodeCampNovember8_1421C/image_thumb.png" width="437" align="right" border="0" />
          </a>
        </p>
        <p>
I want to invite any of you who are within a few hours of <a href="http://maps.google.com/maps?q=Des+Moines,+Iowa&amp;ie=UTF8&amp;oe=utf-8&amp;client=firefox-a&amp;t=h&amp;z=12&amp;iwloc=addr">Des
Moines, Iowa</a> to attend the second <a href="http://www.iowacodecamp.com">Iowa Code
Camp</a> on November 8th.  The first Iowa Code Camp back in May was a huge success.
From <a href="http://devlicio.us/blogs/derik_whittaker/archive/2008/05/04/iowa-code-camp-in-the-rear-view-mirror.aspx">Derik's
write-up</a>:
</p>
        <blockquote>
          <p>
Yesterdays event was awesome.  They had about 125-150 people show up for the
first ever Code Camp in Iowa.  The venue could not have been any nicer and setup
any better.
</p>
        </blockquote>
        <p>
I will be giving one presentation on using RhinoMocks and one workshop on TDD. 
Below are the abstracts.  If you have the chance, take part, and <a href="http://iowacodecamp.com/">register
today</a>.
</p>
        <p>
          <b>TDD: A Workshop in Driving Your Design with Tests</b>
        </p>
        <p>
If you've heard about Test Driven Development (TDD) and wondered what it was or how
to do it, then this workshop is for you.  We'll take a practical, introductory
approach to getting started with TDD.  We'll introduce fundamental object-oriented
design principles including separation of concerns, dependency injection/inversion,
and more.  This will be a hands on lab, so bring your laptops and a copy of Visual
Studio 2008 and expect to learn. 
</p>
        <p>
          <b>Easing your Testing With RhinoMocks 
<br /></b>
        </p>
        <p>
When learning about testing you'll see trivial examples illustrating how to write
tests. However most production code is non-trivial, making calls to configuration
files or to a database which makes testing in isolation hard.  The use of mock
objects allows you to isolate code you want to test by providing fake objects to your
methods, allowing you to set up complex scenarios to test specific conditions. 
In this session we'll first dig into some code that is not very testable and refactor
it to make it more testable.  After the refactoring we'll use and explore RhinoMocks
to see how we can test different scenarios in our code and verify our code is working
as it should.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc" />
      </body>
      <title>Iowa Code Camp - November 8</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc.aspx</guid>
      <link>http://www.timbarcz.com/blog/IowaCodeCampNovember8.aspx</link>
      <pubDate>Wed, 08 Oct 2008 03:56:31 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IowaCodeCampNovember8_1421C/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="122" alt="image" src="http://www.timbarcz.com/blog/content/binary/WindowsLiveWriter/IowaCodeCampNovember8_1421C/image_thumb.png" width="437" align="right" border="0" /&gt;&lt;/a&gt; 
&lt;/p&gt;
&lt;p&gt;
I want to invite any of you who are within a few hours of &lt;a href="http://maps.google.com/maps?q=Des+Moines,+Iowa&amp;amp;ie=UTF8&amp;amp;oe=utf-8&amp;amp;client=firefox-a&amp;amp;t=h&amp;amp;z=12&amp;amp;iwloc=addr"&gt;Des
Moines, Iowa&lt;/a&gt; to attend the second &lt;a href="http://www.iowacodecamp.com"&gt;Iowa Code
Camp&lt;/a&gt; on November 8th.&amp;#160; The first Iowa Code Camp back in May was a huge success.
From &lt;a href="http://devlicio.us/blogs/derik_whittaker/archive/2008/05/04/iowa-code-camp-in-the-rear-view-mirror.aspx"&gt;Derik's
write-up&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Yesterdays event was awesome.&amp;#160; They had about 125-150 people show up for the
first ever Code Camp in Iowa.&amp;#160; The venue could not have been any nicer and setup
any better.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I will be giving one presentation on using RhinoMocks and one workshop on TDD.&amp;#160;
Below are the abstracts.&amp;#160; If you have the chance, take part, and &lt;a href="http://iowacodecamp.com/"&gt;register
today&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;TDD: A Workshop in Driving Your Design with Tests&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
If you've heard about Test Driven Development (TDD) and wondered what it was or how
to do it, then this workshop is for you.&amp;#160; We'll take a practical, introductory
approach to getting started with TDD.&amp;#160; We'll introduce fundamental object-oriented
design principles including separation of concerns, dependency injection/inversion,
and more.&amp;#160; This will be a hands on lab, so bring your laptops and a copy of Visual
Studio 2008 and expect to learn. 
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;Easing your Testing With RhinoMocks 
&lt;br /&gt;
&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
When learning about testing you'll see trivial examples illustrating how to write
tests. However most production code is non-trivial, making calls to configuration
files or to a database which makes testing in isolation hard.&amp;#160; The use of mock
objects allows you to isolate code you want to test by providing fake objects to your
methods, allowing you to set up complex scenarios to test specific conditions.&amp;#160;
In this session we'll first dig into some code that is not very testable and refactor
it to make it more testable.&amp;#160; After the refactoring we'll use and explore RhinoMocks
to see how we can test different scenarios in our code and verify our code is working
as it should.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,fcfbaf3e-b3c8-4c9d-bb7a-19721b7153fc.aspx</comments>
      <category>Announcement</category>
      <category>Community</category>
      <category>CRIneta</category>
      <category>Rhino Mocks</category>
      <category>Testing</category>
    </item>
    <item>
      <trackback:ping>http://www.timbarcz.com/blog/Trackback.aspx?guid=49918c54-ae0f-42af-83de-101e8f90dad9</trackback:ping>
      <pingback:server>http://www.timbarcz.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.timbarcz.com/blog/PermaLink,guid,49918c54-ae0f-42af-83de-101e8f90dad9.aspx</pingback:target>
      <dc:creator>Tim Barcz</dc:creator>
      <wfw:comment>http://www.timbarcz.com/blog/CommentView,guid,49918c54-ae0f-42af-83de-101e8f90dad9.aspx</wfw:comment>
      <wfw:commentRss>http://www.timbarcz.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=49918c54-ae0f-42af-83de-101e8f90dad9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yesterday Oren <a href="http://ayende.com/Blog/archive/2008/10/05/rhino-mocks-3.5-rtm.aspx">announced
the release of RhinoMocks 3.5</a>.  While the RC version has been out for a bit
the RTM release fixes a few bugs.  You can read all about the <a href="http://ayende.com/Blog/archive/2008/10/05/rhino-mocks-3.5-rtm.aspx">enhancements
and features in Oren's post</a>.  
</p>
        <p>
The feature that excites me the most about the new RhinoMocks release is the <a href="http://ayende.com/Blog/archive/2008/05/16/Rhino-Mocks--Arrange-Act-Assert-Syntax.aspx">AAA
Syntax (Arrange-Act-Assert)</a>.  One thing I've always struggled with when explaining
mocking to people is the record replay model.  The new syntax seems to be more
natural.  I have no empirical evidence to back that last statement up, only anecdotal
evidence from observing fellow employees interact with the new syntax.
</p>
        <p>
A close second in terms of changes is the deprecations of CreateMock().  In all
the features, patches, improvements, and bug fixes this is the only item Oren bolded,
which shows it's importance:
</p>
        <blockquote>
          <p>
            <strong>CreateMock() is <em>deprecated </em>and marked with the [Obsolete] attribute.
Use StrictMock() instead.</strong>
          </p>
        </blockquote>
        <p>
This one is great for beginners who instinctively pick up the binaries and see the
method CreateMock() and end up later with brittle tests.  <a href="http://blogs.msdn.com/brada/">Brad
Abrams</a> talks about the <a href="http://blogs.msdn.com/brada/archive/2003/10/02/50420.aspx">"Pit
of Success"</a> and quotes Rico Mariani:
</p>
        <blockquote>
          <p>
            <b>The Pit of Success</b>: in stark contrast to a summit, a peak, or a journey across
a desert to find victory through many trials and surprises, we want our customers
to simply fall into winning practices by using our platform and frameworks. To the
extent that we make it easy to get into trouble we fail.
</p>
        </blockquote>
        <p>
In earlier versions of Rhino it was too easy to use CreateMock() when DynamicMock()
is what you wanted.  New mockers were often using the wrong method (I was one
of these CreateMock() abusers/users).  The warning when using CreateMock, and
the other enhancements/changes, make falling into the pit of success (with mocking)
a much more likely reality.
</p>
        <p>
You can <a href="http://ayende.com/projects/rhino-mocks/downloads.aspx">download the
bits from Oren's download area</a>.  When you download, I would encourage you
to <a href="http://ayende.com/donations.aspx">make a donation to Oren's open source
efforts</a>.
</p>
        <img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=49918c54-ae0f-42af-83de-101e8f90dad9" />
      </body>
      <title>Rhino Mocks 3.5 RTM</title>
      <guid isPermaLink="false">http://www.timbarcz.com/blog/PermaLink,guid,49918c54-ae0f-42af-83de-101e8f90dad9.aspx</guid>
      <link>http://www.timbarcz.com/blog/RhinoMocks35RTM.aspx</link>
      <pubDate>Mon, 06 Oct 2008 01:18:41 GMT</pubDate>
      <description>&lt;p&gt;
Yesterday Oren &lt;a href="http://ayende.com/Blog/archive/2008/10/05/rhino-mocks-3.5-rtm.aspx"&gt;announced
the release of RhinoMocks 3.5&lt;/a&gt;.&amp;#160; While the RC version has been out for a bit
the RTM release fixes a few bugs.&amp;#160; You can read all about the &lt;a href="http://ayende.com/Blog/archive/2008/10/05/rhino-mocks-3.5-rtm.aspx"&gt;enhancements
and features in Oren's post&lt;/a&gt;.&amp;#160; 
&lt;/p&gt;
&lt;p&gt;
The feature that excites me the most about the new RhinoMocks release is the &lt;a href="http://ayende.com/Blog/archive/2008/05/16/Rhino-Mocks--Arrange-Act-Assert-Syntax.aspx"&gt;AAA
Syntax (Arrange-Act-Assert)&lt;/a&gt;.&amp;#160; One thing I've always struggled with when explaining
mocking to people is the record replay model.&amp;#160; The new syntax seems to be more
natural.&amp;#160; I have no empirical evidence to back that last statement up, only anecdotal
evidence from observing fellow employees interact with the new syntax.
&lt;/p&gt;
&lt;p&gt;
A close second in terms of changes is the deprecations of CreateMock().&amp;#160; In all
the features, patches, improvements, and bug fixes this is the only item Oren bolded,
which shows it's importance:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;CreateMock() is &lt;em&gt;deprecated &lt;/em&gt;and marked with the [Obsolete] attribute.
Use StrictMock() instead.&lt;/strong&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This one is great for beginners who instinctively pick up the binaries and see the
method CreateMock() and end up later with brittle tests.&amp;#160; &lt;a href="http://blogs.msdn.com/brada/"&gt;Brad
Abrams&lt;/a&gt; talks about the &lt;a href="http://blogs.msdn.com/brada/archive/2003/10/02/50420.aspx"&gt;&amp;quot;Pit
of Success&amp;quot;&lt;/a&gt; and quotes Rico Mariani:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;b&gt;The Pit of Success&lt;/b&gt;: in stark contrast to a summit, a peak, or a journey across
a desert to find victory through many trials and surprises, we want our customers
to simply fall into winning practices by using our platform and frameworks. To the
extent that we make it easy to get into trouble we fail.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
In earlier versions of Rhino it was too easy to use CreateMock() when DynamicMock()
is what you wanted.&amp;#160; New mockers were often using the wrong method (I was one
of these CreateMock() abusers/users).&amp;#160; The warning when using CreateMock, and
the other enhancements/changes, make falling into the pit of success (with mocking)
a much more likely reality.
&lt;/p&gt;
&lt;p&gt;
You can &lt;a href="http://ayende.com/projects/rhino-mocks/downloads.aspx"&gt;download the
bits from Oren's download area&lt;/a&gt;.&amp;#160; When you download, I would encourage you
to &lt;a href="http://ayende.com/donations.aspx"&gt;make a donation to Oren's open source
efforts&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.timbarcz.com/blog/aggbug.ashx?id=49918c54-ae0f-42af-83de-101e8f90dad9" /&gt;</description>
      <comments>http://www.timbarcz.com/blog/CommentView,guid,49918c54-ae0f-42af-83de-101e8f90dad9.aspx</comments>
      <category>Open Source Software</category>
      <category>Rhino Mocks</category>
    </item>
  </channel>
</rss>