<?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:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>ISerializable - Roy Osherove&amp;#39;s Blog</title><link>http://weblogs.asp.net/rosherove/default.aspx</link><description>Unit Testing, Agile Development, Architecture, Team System &amp;amp; .NET  - By Roy Osherove</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><image><link>http://www.ISerializable.com</link><url>http://files.osherove.com/Roy_Pic_BW_Small.jpg</url><title>Roy Osherove</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/Iserializable" type="application/rss+xml" /><feedburner:emailServiceId>2059</feedburner:emailServiceId><feedburner:feedburnerHostname>http://www.feedburner.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site.</feedburner:browserFriendly><item><title>Configuration via Typemock Interception</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/336138603/configuration-via-typemock-interception.aspx</link><pubDate>Tue, 15 Jul 2008 14:28:02 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6401742</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6401742</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/15/configuration-via-typemock-interception.aspx#comments</comments><description>&lt;p&gt;A while ago &lt;a href="http://udidahan.weblogs.us/2008/06/13/external-value-configuration-with-ioc/"&gt;Udi Dahan wrote that he'd like a way to configure objects&lt;/a&gt; by just setting property values on an object. those &amp;quot;setters&amp;quot; will be intercepted and saved to&amp;#160; some config object (or container) for the future use of the application. &lt;a href="http://blog.typemock.com/2008/07/configuration-via-typemock-interception.html"&gt;Here is how simple it is to do with Isolator&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6401742" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=QIIcz4"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=QIIcz4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=8Tr3hJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=8Tr3hJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=aDOa7J"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=aDOa7J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=rEuJoj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=rEuJoj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/336138603" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/15/configuration-via-typemock-interception.aspx</feedburner:origLink></item><item><title>ALT.NET Israel registration is open</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/334925591/alt-net-israel-registration-is-open.aspx</link><pubDate>Mon, 14 Jul 2008 08:40:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6399328</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6399328</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/14/alt-net-israel-registration-is-open.aspx#comments</comments><description>&lt;p&gt;The &lt;a href="http://altdotnet.org/events/israel" mce_href="http://altdotnet.org/events/israel"&gt;registration for ALT.NET Israel is now open&lt;/a&gt;. You will need an OpenID (I use myopenid.com) to register. We are limited to 50 seats for the first event. First come first served. Worst case scenario you go into the waiting list.&lt;/p&gt;  &lt;p&gt;Please &lt;b&gt;only register if you are serious about attending&lt;/b&gt;. &lt;/p&gt;  &lt;p&gt;The event takes place in two parts: Thursday eve. from 18:.30 to 20.30 and then the full day on friday (9-17.00). more details on the site.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6399328" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=a4fWip"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=a4fWip" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=lgMedJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=lgMedJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=xJHsoJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=xJHsoJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=7JVilj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=7JVilj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/334925591" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile+Israel+News/default.aspx">Agile Israel News</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/altnetconf/default.aspx">altnetconf</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/altnet/default.aspx">altnet</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/14/alt-net-israel-registration-is-open.aspx</feedburner:origLink></item><item><title>ALT.NET Israel - August 7th-8th 2008</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/334493295/alt-net-israel-august-7th-8th-2008.aspx</link><pubDate>Sun, 13 Jul 2008 20:07:34 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6397574</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6397574</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/13/alt-net-israel-august-7th-8th-2008.aspx#comments</comments><description>&lt;p&gt;I'm really happy to announce that we are going to have a small (30-70 people) ALT.NET Open Space event in Israel. &lt;a href="http://www.kenegozi.com/Blog/2008/07/13/announcing-alt-dot-net-israel-the-community-driven-unconference.aspx"&gt;The full details can be seen on Ken Egozi's blog&lt;/a&gt;. Ken is the one who drove &lt;a href="http://ayende.com/blog"&gt;Oren&lt;/a&gt; and myself into finally getting off our big butts and do this, but he's the one who find the nice location (SQLink offices) and we have &lt;a href="http://www.Typemock.com"&gt;Typemock&lt;/a&gt; to sponsor food and drinks for the conference.&lt;/p&gt;  &lt;p&gt;Registration is &lt;strong&gt;not open yet&lt;/strong&gt;. once the site is ready I will announce it. it is free on a first come first served basis and once we have all the spots filled up you will be put in a waiting list. It will take place on August 7-8 (3 weeks from now!) in Ramat Gan. &lt;/p&gt;  &lt;p&gt;In the tradition of open spaces, the first half day (we meet in the evening of thursday) will be devoted to coming up with an agenda for the next day. the next (full day) will be totally run by the attendees. Should be lots of fun!&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6397574" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=N2x5kl"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=N2x5kl" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=OzQ4jJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=OzQ4jJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=kecs5J"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=kecs5J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=1xP17j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=1xP17j" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/334493295" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/altnetconf/default.aspx">altnetconf</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/altnet/default.aspx">altnet</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/13/alt-net-israel-august-7th-8th-2008.aspx</feedburner:origLink></item><item><title>Poll Results: Threading, Mock Frameworks and unit test frameworks</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/334482576/poll-results-threading-mock-frameworks-and-unit-test-frameworks.aspx</link><pubDate>Sun, 13 Jul 2008 19:53:40 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6397527</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6397527</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/13/poll-results-threading-mock-frameworks-and-unit-test-frameworks.aspx#comments</comments><description>&lt;p&gt;Here are the current results from &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/10/poll-what-threading-features-do-you-use.aspx"&gt;the three questions I asked last week&lt;/a&gt;. Thanks to all those who answered. If you have not answered yet, it would be great if you &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/10/poll-what-threading-features-do-you-use.aspx"&gt;took a minute to do so&lt;/a&gt; so we can all learn a little something.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What unit test framework do you use?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/PollResultsThreadingMockFrameworksanduni_141E0/WindowClipping%20(2)_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="451" alt="WindowClipping (2)" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/PollResultsThreadingMockFrameworksanduni_141E0/WindowClipping%20(2)_thumb.jpg" width="580" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The (not so) big surprise is the MS Test is gaining and MvUnit is still way behind on usage compared to NUnit. When MS wants something, it gets it, I guess.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What mocking framework do you use?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/PollResultsThreadingMockFrameworksanduni_141E0/WindowClipping%20(3)_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="499" alt="WindowClipping (3)" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/PollResultsThreadingMockFrameworksanduni_141E0/WindowClipping%20(3)_thumb.jpg" width="626" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Rhino Mocks is far ahead. It seems that, of the some 140 answers, almost the same amount of people don't do testing as there are those that use Moq, with &lt;a href="http://www.typemock.com"&gt;Typemock Isolator&lt;/a&gt;, the only Commercial product in the bunch, coming in 3rd (not counting &amp;quot;none&amp;quot; obviously).&amp;#160; It sure is gaining, though. I would have expected more people to be using hand-made mocks and stubs, as that is a very simple way to get started, but that may be a sign that a lot of people may be abusing their mocking framework when they could be having much simpler tests.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What threading features do you use?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/PollResultsThreadingMockFrameworksanduni_141E0/WindowClipping%20(4)_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="524" alt="WindowClipping (4)" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/PollResultsThreadingMockFrameworksanduni_141E0/WindowClipping%20(4)_thumb.jpg" width="584" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;OK. 550 answer this so far. Far too many people are using Thread.Sleep which may not be the best course of action in many places. We will be using this in our &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx"&gt;upcoming Typemock Racer&lt;/a&gt; to decide which features to support at what order (since we are working incrementally with two week iterations). &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6397527" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=Zmi1Ym"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=Zmi1Ym" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=h2CdWJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=h2CdWJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=QPJq1J"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=QPJq1J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=Xdk0vj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=Xdk0vj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/334482576" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/13/poll-results-threading-mock-frameworks-and-unit-test-frameworks.aspx</feedburner:origLink></item><item><title>Over Specification in Tests</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/333440260/over-specification-in-tests.aspx</link><pubDate>Sat, 12 Jul 2008 10:23:07 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6391567</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6391567</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/12/over-specification-in-tests.aspx#comments</comments><description>&lt;p&gt;I've gotten the chance to visit and consult various companies and I see this all the time: Over specification in tests, &lt;a href="http://weblogs.asp.net/rosherove/archive/2007/09/16/mocks-and-stubs-the-difference-is-in-the-flow-of-information.aspx"&gt;especially when doing mocks and stubs&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;One main reason for that is that people use their stub as a mock object (stubs are fake objects that we will not assert on so that we can test something else). here is a small example from something posted on the alt.net mailing list:&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;[Test]&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;public void Can_Return_All_Plans()&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;{&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;IPlanDao mockPlanDao = MockRepository.GenerateMock&amp;lt;IPlanDao&amp;gt;();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;mockPlanDao.Expect(x =&amp;gt; x.AllPlans(_fakeAdmin)).Return(new List&amp;lt;Plan&amp;gt;{_fakePlan});&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;PlanController planController = new PlanControllerForTesting(_mockCommonDao, _mockCommonService, mockPlanDao);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;ViewResult result = planController.All(false);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;mockPlanDao.VerifyAllExpectations();&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;result.AssertViewResultNameAndViewDataType(typeof(PlanContainer), &amp;quot;Plans&amp;quot;);&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;in this test the following line is used to &amp;quot;stub&amp;quot; out a return value into the system under test. &lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;mockPlanDao.Expect(x =&amp;gt; x.AllPlans(_fakeAdmin)).Return(new List&amp;lt;Plan&amp;gt;{_fakePlan});&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;no problem here. The problem lies in the last two lines of the test:&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;mockPlanDao.VerifyAllExpectations(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000"&gt;result.AssertViewResultNameAndViewDataType(typeof(PlanContainer), &amp;quot;Plans&amp;quot;); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;the second line (the assert) is probably the thing you really want to test. but the call to &amp;quot;verifyAllExpectations&amp;quot; is the one that makes the test very fragile. It is &amp;quot;asserting&amp;quot; that someone has actually called &amp;quot;GetAllPlans()&amp;quot; to get the results, when it clearly does not matter how one got the results. all that matters is that:&lt;/p&gt;  &lt;p&gt;&amp;quot;Given a set of results returned into the application under test, the view in the controller is correct&amp;quot; (the translation of the last line in the test).&lt;/p&gt;  &lt;p&gt;If by any chance the application later does several more calls to the stubbed out dao, or uses a different method to get results, the test could break, even though the application would still ultimately work with the same end result.&lt;/p&gt;  &lt;p&gt;It's like me ordering a pizza delivery and then asking the delivery guy &amp;quot;did you get here by car or motorcycle?&amp;quot; . I realy don't care, as long as the end result: PIZZA, is correct.&lt;/p&gt;  &lt;p&gt;So the general rules for me are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;If you see both &amp;quot;Verify&amp;quot; and &amp;quot;Assert&amp;quot; in the same test, it is usualy a smell of over specified tests&lt;/li&gt;    &lt;li&gt;if you see &amp;quot;expect&amp;quot; and &amp;quot;Return&amp;quot; on a fake object, make sure that you name it &amp;quot;stubXX&amp;quot; or &amp;quot;mockXX&amp;quot; so that you can distinguish whether you want to call verify on it later or not(most cases should be &amp;quot;not&amp;quot;)&lt;/li&gt;    &lt;li&gt;Try to test on the end result or end state rather than verify interactions.&amp;#160; The only time you &lt;em&gt;absolutely have not choice&lt;/em&gt; but to test an interaction using verify is when calling &lt;em&gt;void&lt;/em&gt; methods on external objects. that is clearly a one-way communication and &lt;em&gt;is (or part of)the end result&lt;/em&gt; of what you are trying to accomplish.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A lot of people think that adding that extra &amp;quot;verify&amp;quot; just means it is a good thing since they are doing more assert. Well, they sure are testing more things, but they are &lt;em&gt;internal&lt;/em&gt; things to the app's behavior and that is usually leading to brittle tests. Try to test on the end result or end state rather than verify interactions. &lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6391567" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=gkO372"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=gkO372" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=kHUJ9J"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=kHUJ9J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=sdvNiJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=sdvNiJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=7mlZ6j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=7mlZ6j" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/333440260" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile+Related/default.aspx">Agile Related</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Art+Of+Unit+Testing/default.aspx">Art Of Unit Testing</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/12/over-specification-in-tests.aspx</feedburner:origLink></item><item><title>Poll: What threading features do you use?</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/332110279/poll-what-threading-features-do-you-use.aspx</link><pubDate>Thu, 10 Jul 2008 21:57:26 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6385911</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6385911</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/10/poll-what-threading-features-do-you-use.aspx#comments</comments><description>&lt;p&gt;As we are working on the next set of features for &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx"&gt;Typemock Racer, the threading related test framework&lt;/a&gt;, I think it will be nice to know what features and thread constructs people use the most in their applications. The poll below uses flash, if you can't see it. &lt;/p&gt;  &lt;p&gt;Please fill it in and we'll see what people use the most! While I'm here, I may as well ask you another couple of questions that need re-examining. Which mocking framework (if at all do you use?) and which unit test frameworks do you use?&lt;/p&gt; &lt;embed name="beta3" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.polldaddy.com/poll.swf" width="252" height="617" type="application/x-shockwave-flash" scale="autoscale" salign="tl" bgcolor="#ffffff" wmode="transparent" quality="high" flashvars="p=773764" saveembedtags="true" allowscriptaccess="never" /&gt; &lt;embed name="beta3" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.polldaddy.com/poll.swf" width="252" height="420" type="application/x-shockwave-flash" allowscriptaccess="never" saveembedtags="true" flashvars="p=773788" quality="high" wmode="transparent" bgcolor="#ffffff" salign="tl" scale="autoscale" /&gt; &lt;embed name="beta3" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.polldaddy.com/poll.swf" width="252" height="389" type="application/x-shockwave-flash" scale="autoscale" salign="tl" bgcolor="#ffffff" wmode="transparent" quality="high" flashvars="p=773822" saveembedtags="true" allowscriptaccess="never" /&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6385911" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=PqOYe4"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=PqOYe4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=1OHNaJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=1OHNaJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=9T0NGJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=9T0NGJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=jSk9Yj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=jSk9Yj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/332110279" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/10/poll-what-threading-features-do-you-use.aspx</feedburner:origLink></item><item><title>Non Paged CLR Host</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/330105320/non-paged-clr-host.aspx</link><pubDate>Tue, 08 Jul 2008 19:36:43 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6377349</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6377349</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/08/non-paged-clr-host.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/sasha/"&gt;Sasha&lt;/a&gt; and &lt;a href="http://blogs.microsoft.co.il/blogs/alon"&gt;Alon&lt;/a&gt; have &lt;a href="http://blogs.microsoft.co.il/blogs/sasha/archive/2008/06/27/non-paging-clr-host.aspx"&gt;released&lt;/a&gt; an open source project called &amp;quot;&lt;a href="http://www.codeplex.com/NonPagedCLRHost"&gt;Non Paged CLR Host&lt;/a&gt;&amp;quot; which has the following benefits(quoted):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;strong&gt;Applications will benefit from no paging during normal operation.&lt;/strong&gt;&amp;#160; Even if other applications are actively allocating memory, allocations performed under the non-paged CLR host will be locked into physical memory. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;No paging will occur when the application is idle&lt;/strong&gt;, providing a great benefit to low-latency processes such as GUI applications (even if the user has fallen asleep in front of the monitor).&amp;#160; The normal working set management scheme employed by Windows will not affect processes running under the non-paged CLR host.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;That's Pretty cool. I've had the pleasure of working on a project with both of them, where CLR memory boundaries are constantly challenged. I wonder if it could benefit from such a piece of code!&lt;/p&gt;  &lt;p&gt;PS&lt;/p&gt;  &lt;p&gt;If you're not following &lt;a href="http://www.codeplex.com/NonPagedCLRHost"&gt;sasha's blog&lt;/a&gt; - you really should.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6377349" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=TULMu4"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=TULMu4" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=GF8ZIJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=GF8ZIJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=GjQWzJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=GjQWzJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=l24FCj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=l24FCj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/330105320" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Cool+Tools/default.aspx">Cool Tools</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/.NET/default.aspx">.NET</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/08/non-paged-clr-host.aspx</feedburner:origLink></item><item><title>A sneak Preview of Typemock Racer : Thread Deadlock Finder</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/329920254/a-sneak-preview-of-typemock-racer.aspx</link><pubDate>Tue, 08 Jul 2008 15:42:28 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6376639</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>11</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6376639</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx#comments</comments><description>&lt;p&gt;Here's a sneak preview of the upcoming &lt;a href="http://www.Typemock.com"&gt;Typemock&lt;/a&gt; Racer product, which I'm currently working on. We should be out in private CTP in a couple of weeks I hope.&lt;/p&gt;  &lt;p&gt;Typemock Racer tries to solve one huge problem for developers working in multi threaded environments: Detecting code that can result in deadlocks or race conditions. It does this by providing a framework API which you can use in your tests (under NUnit for example), that allows you to execrise your code under test until it finds a deadlock or times out.&lt;/p&gt;  &lt;p&gt;Here's an example of how you'd use it. Consider the following class which has two methods, that if run by two seperate threads, can result in a deadlock condition:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="433" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_thumb.png" width="328" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;At some point in time the threads could execute such that thread 1 is waiting on resource b, which is held by thread two , which is waiting on resource a, held by thread 1 - a pure deadlock.&lt;/p&gt;  &lt;p&gt;Given this class we can write a test that looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="217" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_thumb_1.png" width="542" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The ThreadTest class has an &amp;quot;AddThreadAction&amp;quot; method that receives a delegate. you can use it to invoke your own code, it will be invoked in a different thread. IN this example we are creating two threads, each one running a different method on MyClassWithLocks.&lt;/p&gt;  &lt;p&gt;We can just right click and run the test with TestDriven.NET to recieve the following results:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="294" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_thumb_3.png" width="569" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The output states that there is a deadlock that was found, with the exact steps that happened (with line locations) to reproduce this.&lt;/p&gt;  &lt;p&gt;It currently only works with lock (monitor.Enter\Exit) but will support all locking constructs in .NET.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What if the methods you point to create their own threads? Like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="502" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_thumb_4.png" width="568" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Here is the output that you'd get if you run this test:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="448" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/AsneakPreviewofTypemockRacer_10517/image_thumb_5.png" width="661" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6376639" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=fxjJlm"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=fxjJlm" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=P6xYUJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=P6xYUJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=JLUrUJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=JLUrUJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=Uuzcrj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=Uuzcrj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/329920254" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Cool+Tools/default.aspx">Cool Tools</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile+Related/default.aspx">Agile Related</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/General+Software+Development/default.aspx">General Software Development</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Art+Of+Unit+Testing/default.aspx">Art Of Unit Testing</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/08/a-sneak-preview-of-typemock-racer.aspx</feedburner:origLink></item><item><title>Introducing Audibler: Download your audible audio books DRM free</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/328359156/introducing-audibler-download-your-audible-audio-books-drm-free.aspx</link><pubDate>Sun, 06 Jul 2008 22:21:16 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6368313</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>5</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6368313</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/06/introducing-audibler-download-your-audible-audio-books-drm-free.aspx#comments</comments><description>&lt;p&gt;When I first heard of &lt;a href="http://www.audible.com/"&gt;Audible.com&lt;/a&gt; (in one of the &lt;a href="http://twit.tv/twit"&gt;TWiT shows&lt;/a&gt;) I was very excited that I could get lots of stuff to hear on my mp3 player.&lt;/p&gt;  &lt;p&gt;Then I started using it. And was&lt;strong&gt; terribly annoyed&lt;/strong&gt;.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I couldn't use the downloads on my Zune device because of Silly DRM issues &lt;/li&gt;    &lt;li&gt;Living in Israel, some audio books (like colbert's book, or Hodgman's book) are blocked for me to purchase. &lt;/li&gt;    &lt;li&gt;I can't back up or convert my files or play them freely because of the DRM protection, even though they are &lt;em&gt;mine&lt;/em&gt; and I have purchased them fairly. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I looked for a long time for a way to get the files DRM free. There was one way but it required to have an old version of the audible software installed. They have fixed that &amp;quot;bug&amp;quot; and not the only way is for people to burn 9 hour books on 11 CDs and then rip them to mp3. and that is a big pain.&lt;/p&gt;  &lt;p&gt;So, Audible, this is for making me feel a second class net citizen, as well as many others.&lt;/p&gt;  &lt;p&gt;I finally found a way to get my fully paid for audio files &lt;strong&gt;without DRM&lt;/strong&gt; and without needing the bloody audible download manager (which is actually the thing that puts the DRM on the files!). I created a little program that helps you download the files directly to your computer without the audible software. &lt;/p&gt;  &lt;p&gt;To make sure you understand - you can only download &lt;strong&gt;your own purchased books using this tool&lt;/strong&gt; just like the standard way. the only difference is that they will not be with DRM so you can back them up and move them around and convert them as much as you want.&lt;/p&gt;  &lt;p&gt;If you're interested in how my workaround works (you're a geek) it is in the bottom of this post. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;How to &lt;font color="#ff0000"&gt;download&lt;/font&gt; your paid-for DRM free audible books&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://shrinkster.com/101q"&gt;Download my little program&lt;/a&gt;: Audibler.zip and unzip it.&amp;#160; (5k). You need &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&amp;amp;displaylang=en"&gt;.NET Framework 2.0 or above&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Login to the &lt;a href="http://www.audible.com"&gt;audible website&lt;/a&gt; normally and go to &amp;quot;my library&amp;quot; &lt;/li&gt;    &lt;li&gt;Go the line where the book you want to download is, and &lt;strong&gt;right click&lt;/strong&gt; on the button that says &amp;quot;Download it&amp;quot;. The copy the link url in the button to the clipboard. &lt;/li&gt;    &lt;li&gt;Run the audibler.exe file that you unzipped earlier.      &lt;ul&gt;       &lt;li&gt;The link you copied to the clipboard should be shown on the top screen. &lt;/li&gt;        &lt;li&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/f2ce356a3135_7BE/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="113" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/f2ce356a3135_7BE/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;Click &amp;quot;Translate and start link&amp;quot; to have your default browser start downloading the file directly. &lt;/li&gt;        &lt;li&gt;Or you can click &amp;quot;translate&amp;quot; and then copy the URL on the bottom of the dialog to your browser address bar. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;How to &lt;font color="#ff0000"&gt;convert&lt;/font&gt; the downloaded .aa files to mp3&lt;/strong&gt;       &lt;br /&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;you can use your own favorite conversion software from .aa to .mp3. below is how I am doing it. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Install DbPowerAmp &lt;/strong&gt;power pack and the directshow plugin (&lt;a href="http://www.dbpoweramp.com/"&gt;http://www.dbpoweramp.com/)&lt;/a&gt; (It seems to work really fast) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://files.osherove.com/downloads/AudibleMediaPlayerFilter.zip"&gt;Download and run the Audible Media Player Filter&lt;/a&gt; and install it, if you are running the latest version (5.0) of audible manager. &lt;/li&gt;    &lt;li&gt;if you are running version 4.0 this is not needed.&lt;/li&gt;    &lt;li&gt;after downloading the file you wanted,&amp;#160; right click on the file in windows explorer and choose &amp;quot;covert to&amp;quot; and convert to mp3. &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;if you don't see any &amp;quot;convert to&amp;quot; menu, &lt;/strong&gt;      &lt;ul&gt;       &lt;li&gt;You may need to go to &amp;quot;c:\Documents and Settings\[YOUR_USER_NAME]\Application Data\dBpoweramp\directshow.txt and add '.aa' without the quotes as a new line in the middle of the file somewhere. &lt;/li&gt;        &lt;li&gt;then go the the start menu and run dbPowerAmp configuration and click OK on the dialog. then try again. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;How this works:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To find out what happens behind the scenes I used the free Fiddler2 tool from Microsoft that can trace http communications. When I ran it along side the audible download manager I could see the request to download the special file URL. From there it was a simple matter of looking at the web page, seeing how the links are built, and changing parts of the URL to fit what the Download manager was requesting.&lt;/p&gt;  &lt;p&gt;It uses a simple regular expression to find out the parts of the URL (let's see how fast they change it..) and then replace them with what the software needs. You can also just open Reflector and look at audibler.exe to see exactly how simple it is.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6368313" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=O7x2IR"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=O7x2IR" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=pP7uEJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=pP7uEJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=s6DkDJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=s6DkDJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=XKRoyj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=XKRoyj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/328359156" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Cool+Tools/default.aspx">Cool Tools</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/06/introducing-audibler-download-your-audible-audio-books-drm-free.aspx</feedburner:origLink></item><item><title>Is Moq too poweful?</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/328241945/is-moq-too-poweful.aspx</link><pubDate>Sun, 06 Jul 2008 18:59:28 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6367602</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>12</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6367602</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/06/is-moq-too-poweful.aspx#comments</comments><description>&lt;p&gt;It's interesting to see the other mocking frameworks as they grow into maturity. Especially Moq &lt;a href="http://www.clariusconsulting.net/blogs/kzu/archive/2008/07/05/MockingprotectedmemberswithMoq.aspx"&gt;which has been getting loads&lt;/a&gt; of new features recently. The latest one is something which makes me feel a bit weird after reading all the things people fear in &lt;a href="http://www.typemock.com"&gt;Typemock Isolator&lt;/a&gt;:It seems that&amp;#160; &lt;a href="http://www.clariusconsulting.net/blogs/kzu/archive/2008/07/05/MockingprotectedmemberswithMoq.aspx"&gt;Moq now allows mocking protected fields&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;What's really interesting is that Daniel has chosen to actively allow this, and &lt;em&gt;hide&lt;/em&gt; the feature at the same time, as well as put it under a strict &lt;em&gt;optional request&lt;/em&gt;:&lt;/p&gt;  &lt;p&gt;you have to opt in for each code file where you'd like this ability by adding a special imports statement.&lt;/p&gt;  &lt;p&gt;So, the questions I have are:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;What happened to &amp;quot;if it's not testable it's a design smell&amp;quot;? Is this a compromise or have people figured out that good design can take many forms, with tools being left to do the hard lifting?&lt;/li&gt;    &lt;li&gt;If you're going to add powerful &amp;quot;non classic&amp;quot; mocking ability to a framework, does adding it as a special &amp;quot;opt-in&amp;quot; feature make it OK? (this is what we are talking about doing with Typemock Isolator)&lt;/li&gt;    &lt;li&gt;If tomorrow Rhino.Mocks were to add the same feature or something even more powerful (statics?) how would people treat that?&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6367602" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=lUkUHX"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=lUkUHX" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=jVWxRJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=jVWxRJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=raCTtJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=raCTtJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=uU5Taj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=uU5Taj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/328241945" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile+Related/default.aspx">Agile Related</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/06/is-moq-too-poweful.aspx</feedburner:origLink></item><item><title>Extending Depender with your own custom dependency rules</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/327470643/extending-depender-with-your-own-custom-dependency-rules.aspx</link><pubDate>Sat, 05 Jul 2008 16:24:17 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6363030</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6363030</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/05/extending-depender-with-your-own-custom-dependency-rules.aspx#comments</comments><description>&lt;p&gt;In the previous &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/05/introducing-depender-testability-problem-finder.aspx"&gt;post I introduced Depender&lt;/a&gt;, to help find dependency issues in your code (usually for testing).&lt;/p&gt;  &lt;p&gt;I've added extensibility to it so that you can write your own rules. If &lt;a href="http://files.osherove.com/downloads/Depender.zip"&gt;you download depender&lt;/a&gt; there will also be a &amp;quot;src&amp;quot; directory in the zip file, which shows how the current rules it uses were built. &lt;/p&gt;  &lt;p&gt;it should be really easy to created your own rules. Just :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;create your own assembly that has a name ending with &amp;quot;.Rules.dll&amp;quot; &lt;/li&gt;    &lt;li&gt;Implement IRule in your class, or, if you want to parse the contents of a method, inherit from MethodParserRule.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;your rule will be automatically loaded according to the assembly naming convention and its interface.&lt;/p&gt;  &lt;p&gt;here's how a simple rule looks:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000" size="3"&gt;public class FindOverridableMethodsRule:IRule     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public void Check(MethodInfo info, Dependency parent)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (!info.IsFinal &amp;amp;&amp;amp; (info.IsVirtual || info.IsAbstract))      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; parent.Add(new Dependency(string.Format(&amp;quot; {0}() can be overriden&amp;quot;, info.Name)));      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; public bool CanCheck(object obj)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return obj is MethodInfo;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cou" color="#800000" size="3"&gt;&amp;#160;&amp;#160;&amp;#160; public void Check(object obj, Dependency parent)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Check(obj as MethodInfo, parent);      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;} &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;and here's a rule that parses the contents of a method:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font face="cour" color="#800000" size="3"&gt;public class FindStaticMethodCallRule : MethodParserRule     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; protected override void DoChecks(MethodBase mehodBeingChecked, MethodBodyInfo methodBody, Dependency parent)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; foreach (ILInstruction instruction in methodBody.Instructions)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (instruction is InlineMethodInstruction)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; InlineMethodInstruction line = instruction as InlineMethodInstruction;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (line.Method.IsStatic)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string message =      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string.Format(&amp;quot;Static method call {0} on {1}&amp;quot;, line.Method.Name,      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; line.Method.ReflectedType.Name); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cour" color="#800000" size="3"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; parent.Add(new ProblemDependency(message));     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="cour" color="#800000" size="3"&gt;} &lt;/font&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6363030" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=7vWulQ"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=7vWulQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=ZDHliJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=ZDHliJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=nH8SDJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=nH8SDJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=weGV6j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=weGV6j" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/327470643" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Cool+Tools/default.aspx">Cool Tools</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/05/extending-depender-with-your-own-custom-dependency-rules.aspx</feedburner:origLink></item><item><title>Introducing Depender - Testability Problem Finder</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/327404472/introducing-depender-testability-problem-finder.aspx</link><pubDate>Sat, 05 Jul 2008 14:08:25 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6362560</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>19</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6362560</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/05/introducing-depender-testability-problem-finder.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Update&lt;/u&gt;&lt;/strong&gt;: &lt;a href="http://weblogs.asp.net/rosherove/archive/2008/07/05/extending-depender-with-your-own-custom-dependency-rules.aspx"&gt;Here's how you can extend Depender&lt;/a&gt; with your own dependency rules&lt;/p&gt;  &lt;p&gt;Depender is a tool that I created to illustrate several concepts both for &lt;a href="http://the.ArtOfUnitTesting.com"&gt;my book&lt;/a&gt; and both for my training classes. I think it should prove valuable (as it gets more and more features) to anyone who is trying to write tests for existing code.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Depender allows you to load an assembly and inspect the types within it according to very simple rules. the main question on my mind and I run it is: &amp;quot;How easy would it be to test class X?&amp;quot;. Depender will list all the classes in the assembly and for each one will try to detect possible testability problems (non decoupling) and places where you might be able to &amp;quot;inject&amp;quot; your own implementation (calls to virtual methods, fields that are interfaces or types who are not sealed..etc..)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;so you can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;see places where you might want to refactor your code or use a tool like &lt;a href="http://www.typemock.com"&gt;Typemock Isolator&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;see places where you can already use &amp;quot;seams&amp;quot; to inject behavior into your code without needing to look up the source code manually. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;here's what the main screen looks like when loading an assembly:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/IntroducingDependerTestabilityProblemFin_F0FF/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="291" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/IntroducingDependerTestabilityProblemFin_F0FF/image_thumb.png" width="402" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;the type &amp;quot;RealLogger&amp;quot; is marked in red because it contains calls to static methods. double clicking on the type's node will load a separate window just for this type:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/IntroducingDependerTestabilityProblemFin_F0FF/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="291" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/IntroducingDependerTestabilityProblemFin_F0FF/image_thumb_1.png" width="320" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will be adding more rules and also releasing the source so that other people can help develop this. for now I just want to get it out there and see what people think.&lt;/p&gt;  &lt;p&gt;possible futures:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Make it command line driven so it can run in your CI builds &lt;/li&gt;    &lt;li&gt;Make it give &amp;quot;scores&amp;quot; to assemblies or types on testability and decoupling &lt;/li&gt;    &lt;li&gt;Make it add &amp;quot;suggestions&amp;quot; on how to fix decoupling issues &lt;/li&gt;    &lt;li&gt;Make it create the base diagram for my &lt;a href="http://weblogs.asp.net/rosherove/pages/420425.aspx"&gt;test feasibility matrix&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Download &lt;a href="http://files.osherove.com/downloads/Depender.zip"&gt;Depender from here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6362560" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=tZhLQS"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=tZhLQS" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=wEPdYJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=wEPdYJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=nt9CKJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=nt9CKJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=fWy8Mj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=fWy8Mj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/327404472" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Cool+Tools/default.aspx">Cool Tools</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Art+Of+Unit+Testing/default.aspx">Art Of Unit Testing</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Typemock/default.aspx">Typemock</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/05/introducing-depender-testability-problem-finder.aspx</feedburner:origLink></item><item><title>[Off Topic] My Geeky little architect</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/326937369/off-topic-my-geeky-little-architect.aspx</link><pubDate>Fri, 04 Jul 2008 21:41:21 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6359854</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6359854</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/04/off-topic-my-geeky-little-architect.aspx#comments</comments><description>&lt;p&gt;My kid is a geek at 18 months:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/OffTopicMyGeekylittlearchitect_631/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="331" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/OffTopicMyGeekylittlearchitect_631/image_thumb.png" width="440" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;and also an amazing architect with a sense of (porcupine) humor:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/OffTopicMyGeekylittlearchitect_631/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="317" alt="image" src="http://weblogs.asp.net/blogs/rosherove/WindowsLiveWriter/OffTopicMyGeekylittlearchitect_631/image_thumb_1.png" width="239" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6359854" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=5ZTTGw"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=5ZTTGw" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=NSgKrJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=NSgKrJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=l6qtpJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=l6qtpJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=ouPNfj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=ouPNfj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/326937369" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Off+Topic/default.aspx">Off Topic</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/04/off-topic-my-geeky-little-architect.aspx</feedburner:origLink></item><item><title>TDD 5-day course\workshop in Norway</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/325887136/tdd-5-day-course-workshop-in-norway.aspx</link><pubDate>Thu, 03 Jul 2008 15:14:05 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6353633</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6353633</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/03/tdd-5-day-course-workshop-in-norway.aspx#comments</comments><description>&lt;p&gt;If you're in norway, this might be of interest to you. I'll be doing two 5-day courses on TDD and Unit Testing in august and december. here are the dates and links to the full course outlines:&lt;/p&gt;  &lt;p&gt;Courses are currently limited to 20 attendees and are mainly exercise driven (working in pairs). I'm only planning to do these 1-2 times a year for scheduling reasons. as far as I hear the august course is already half full.&amp;#160; These are hands on, .NET centric classes, with little theory and mostly practice.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&amp;amp;mid=1535&amp;amp;id=218164"&gt;&lt;u&gt;Test Driven Development in .NET Master Class &lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Date:&amp;#160; August 18&lt;/p&gt;  &lt;p&gt;Location: Oslo&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programutvikling.no/kurs_bestill.aspx?mid_1=1354&amp;amp;step=2&amp;amp;mid=1549&amp;amp;course=218166&amp;amp;type=218164&amp;lang;=no"&gt;&lt;u&gt;Register here&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programutvikling.no/kurskalenderoversikt.aspx?mid_1=1352&amp;amp;mid=1535&amp;amp;id=218164"&gt;&lt;u&gt;Test Driven Development in .NET Master Class&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Date:&amp;#160; December 1st&lt;/p&gt;  &lt;p&gt;Location: Oslo&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.programutvikling.no/kurs_bestill.aspx?mid_1=1354&amp;amp;step=2&amp;amp;mid=1549&amp;amp;course=240573&amp;amp;type=218164&amp;lang;=no"&gt;&lt;u&gt;Register here&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6353633" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=W08mYD"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=W08mYD" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=UGlATJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=UGlATJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=kuhunJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=kuhunJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=LFdnXj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=LFdnXj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/325887136" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/03/tdd-5-day-course-workshop-in-norway.aspx</feedburner:origLink></item><item><title>Typemock Isolator 4.3 and future syntax</title><link>http://feeds.feedburner.com/~r/Iserializable/~3/325693530/typemock-isolator-4-3-and-future-syntax.aspx</link><pubDate>Thu, 03 Jul 2008 10:42:47 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6352849</guid><dc:creator>RoyOsherove</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://weblogs.asp.net/rosherove/rsscomments.aspx?PostID=6352849</wfw:commentRss><comments>http://weblogs.asp.net/rosherove/archive/2008/07/03/typemock-isolator-4-3-and-future-syntax.aspx#comments</comments><description>&lt;p&gt;We just released &lt;a href="http://www.typemock.com"&gt;Typemock Isolator&lt;/a&gt; 4.3 (&lt;a href="http://blog.typemock.com/2008/07/isolator-43-released.html"&gt;here is the blog post with details&lt;/a&gt;). It's an awesome product but I envy the speed and ease with which oren &lt;a href="http://www.ayende.com/Blog/archive/2008/07/01/Rhino-Mocks-3.5-RC-1-Refresh.aspx"&gt;can change his syntax&lt;/a&gt; (it's nice to work alone!) . I can tell you that the next version of Isolator is going to have a new syntax that is more towards the Arrange-act-assert meme (but you could still use the old one if you wanted to) plus lots of cool goodies.&lt;/p&gt;  &lt;p&gt;the new version has full support for &lt;a href="http://sm-art.biz/Ivonna.aspx"&gt;Ivonna&lt;/a&gt; (for ASP.NET webform testing in process) and we have removed .NET 1.1 support. Many other things changed &lt;a href="http://blog.typemock.com/2008/07/isolator-43-released.html"&gt;are listed here&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6352849" width="1" height="1"&gt;
&lt;p&gt;&lt;a href="http://feeds.feedburner.com/~a/Iserializable?a=9OF3Ya"&gt;&lt;img src="http://feeds.feedburner.com/~a/Iserializable?i=9OF3Ya" border="0"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=aFO3sJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=aFO3sJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=JlEweJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=JlEweJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Iserializable?a=GQHsvj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Iserializable?i=GQHsvj" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Iserializable/~4/325693530" height="1" width="1"/&gt;</description><category domain="http://weblogs.asp.net/rosherove/archive/tags/Unit+Testing/default.aspx">Unit Testing</category><category domain="http://weblogs.asp.net/rosherove/archive/tags/Agile/default.aspx">Agile</category><feedburner:origLink>http://weblogs.asp.net/rosherove/archive/2008/07/03/typemock-isolator-4-3-and-future-syntax.aspx</feedburner:origLink></item></channel></rss>
