<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Manual Mocking: Resisting the Invasion of Dots and Parentheses</title>
    <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Manual Mocking: Resisting the Invasion of Dots and Parentheses</title>
      <description>&lt;p&gt;The twittersphere has been all abuzz today because of something I tweeted early this morning (follow @unclebobmartin).  In my tweet I said that I hand-roll most of my own mock objects in Java, rather than using a mocking framework like &lt;a href="mockito.org"&gt;mockito&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;The replies were numerous and vociferous.  Dave Astels poignantly stated that hand-rolling mocks is so 2001!&lt;/p&gt;


	&lt;p&gt;So why do I roll my own mocks?&lt;/p&gt;


Consider the following two tests:
&lt;pre&gt;
public class SelectorTest {
  private List&amp;lt;Object&amp;gt; list;

  @Before
  public void setup() {
    list = new ArrayList&amp;lt;Object&amp;gt;();
    list.add(new Object());
  }

  @Test
  public void falseMatcherShouldSelectNoElements_mockist() {
    Matcher&amp;lt;Object&amp;gt; falseMatcher = mock(Matcher.class);
    Selector&amp;lt;Object&amp;gt; selector = new Selector&amp;lt;Object&amp;gt;(falseMatcher);
    when(falseMatcher.match(anyObject())).thenReturn(false);
    List&amp;lt;Object&amp;gt; selection = selector.select(list);
    assertThat(selection.size(), equalTo(0));
  }

  @Test
  public void falseMatcherShouldSelectNoElements_classic() {
    Matcher&amp;lt;Object&amp;gt; falseMatcher = new FalseMatcher();
    Selector&amp;lt;Object&amp;gt; selector = new Selector&amp;lt;Object&amp;gt;(falseMatcher);
    List&amp;lt;Object&amp;gt; selection = selector.select(list);
    assertThat(selection.size(), equalTo(0));}

  private static class FalseMatcher implements Matcher&amp;lt;Object&amp;gt; {
    public boolean match(Object element) {
      return false;
    }
  }
}
&lt;/pre&gt;

	&lt;p&gt;The first test shows the really cool power of &lt;a href="mockito.org"&gt;mockito&lt;/a&gt; (which is my current favorite in the menagerie of java mocking frameworks).  Just in case you can&amp;#8217;t parse the syntax, let me describe it for you:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;falseMatcher is assigned the return value of the &amp;#8220;mock&amp;#8221; function.  This is a very cool function that takes the argument class and builds a new stubbed object that derives from it.  In mockito, the argument can be a class or an interface.  Cool!&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Now don&amp;#8217;t get all panicy about the strange parenthetic syntax of the &amp;#8216;when&amp;#8217; statement.  The &amp;#8216;when&amp;#8217; statement simply tells the mock what to do when a method is called on it.  In this case it instructs the falseMatcher to return false when the &amp;#8216;match&amp;#8217; function is called with any object at all.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;The second test needs no explanation.&lt;/p&gt;


	&lt;p&gt;...&lt;/p&gt;


	&lt;p&gt;And that&amp;#8217;s kind of the point.  Why would I include a bizzare, dot-ridden, parentheses-laden syntax into my tests, when I can just as easily hand-roll the stub in pure and simple java?  How hard was it to hand-roll that stub?  Frankly, it took a lot less time and effort to hand-roll it than it took to write the (when(myobj.mymethod(anyx())).)()).))); statement.&lt;/p&gt;


	&lt;p&gt;OK, I&amp;#8217;m poking a little fun here.  But it&amp;#8217;s true.  My &lt;span class="caps"&gt;IDE&lt;/span&gt; (InteliJ) generated the stub for me.  I simply started with:&lt;/p&gt;


&lt;pre&gt;
Matcher&amp;lt;Object&amp;gt; falseMatcher = new Matcher&amp;lt;Object&amp;gt;() {};
&lt;/pre&gt;

	&lt;p&gt;InteliJ complained that some methods weren&amp;#8217;t implemented and offered to implement them for me.  I told it to go ahead.  It wrote the &amp;#8216;match&amp;#8217; method exactly as you see it.  Then I chose &amp;#8220;Convert Anonymous to Inner&amp;#8230;&amp;#8221; from the refactoring menu and named the new class FalseMatcher.  Voila!  No muss, no fuss, no parenthetic maze of dots.&lt;/p&gt;


Now look, I&amp;#8217;m not saying you shouldn&amp;#8217;t use mockito, or any of these other mocking tools.  I use them myself when I must.  Here, for example, is a test I wrote in FitNesse.  I was forced to use a mocking framework because I did not have the source code of the classes I was mocking.
&lt;pre&gt;
  @Before
  public void setUp() {
    manager = mock(GSSManager.class);
    properties = new Properties();
  }

  @Test
  public void credentialsShouldBeNonNullIfServiceNamePresent() throws Exception {
    properties.setProperty("NegotiateAuthenticator.serviceName", "service");
    properties.setProperty("NegotiateAuthenticator.serviceNameType", "1.1");
    properties.setProperty("NegotiateAuthenticator.mechanism", "1.2");
    GSSName gssName = mock(GSSName.class);
    GSSCredential gssCredential = mock(GSSCredential.class);
    when(manager.createName(anyString(), (Oid) anyObject(), (Oid) anyObject())).thenReturn(gssName);
    when(manager.createCredential((GSSName) anyObject(), anyInt(), (Oid) anyObject(), anyInt())).thenReturn(gssCredential);
    NegotiateAuthenticator authenticator = new NegotiateAuthenticator(manager, properties);
    Oid serviceNameType = authenticator.getServiceNameType();
    Oid mechanism = authenticator.getMechanism();
    verify(manager).createName("service", serviceNameType, mechanism);
    assertEquals("1.1", serviceNameType.toString());
    assertEquals("1.2", mechanism.toString());
    verify(manager).createCredential(gssName, GSSCredential.INDEFINITE_LIFETIME, mechanism, GSSCredential.ACCEPT_ONLY);
    assertEquals(gssCredential, authenticator.getServerCredentials());
  }
&lt;/pre&gt;

	&lt;p&gt;If I&amp;#8217;d had the source code of the &lt;span class="caps"&gt;GSS&lt;/span&gt; classes, I could have created some very simple stubs and spies that would have allowed me to make these tests a &lt;em&gt;lot&lt;/em&gt; cleaner than they currently appear.  Indeed, I might have been able to test the true &lt;em&gt;behavior&lt;/em&gt; of the classes rather than simply testing that I was calling them appropriately&amp;#8230;&lt;/p&gt;


	&lt;h2&gt;&lt;em&gt;Mockism&lt;/em&gt;&lt;/h2&gt;


	&lt;p&gt;That last bit is pretty important.  Some time ago Martin Fowler wrote a &lt;a href="http://martinfowler.com/articles/mocksArentStubs.html#SoShouldIBeAClassicistOrAMockist"&gt;blog&lt;/a&gt; about the &lt;em&gt;Mockist&lt;/em&gt; and &lt;em&gt;Classical&lt;/em&gt; style of &lt;span class="caps"&gt;TDD&lt;/span&gt;.  In short, &lt;em&gt;Mockists&lt;/em&gt; don&amp;#8217;t test the behavior of the system so much as they test that their classes &amp;#8220;dance&amp;#8221; well with other classes.  That is, they mock/stub out all the other classes that the class under test uses, and then make sure that all the right functions are called in all the right orders with all the right arguments. etc.  There is value to doing this in many cases.  However you can get pretty badly carried away with the approach.&lt;/p&gt;


	&lt;p&gt;The classical approach is to test for desired behavior, and trust that if the test passes, then the class being tested must be dancing well with its partners.&lt;/p&gt;


	&lt;p&gt;Personally, I don&amp;#8217;t belong to either camp.  I sometimes test the choreography, and I sometimes test the behavior.  I test the choreography when I am trying to isolate one part of the system from another.  I test for the behavior when such isolation is not important to me.&lt;/p&gt;


	&lt;p&gt;The point of all this is that I have observed that a heavy dependence on mocking frameworks tends to tempt you towards testing the dance when you &lt;em&gt;should&lt;/em&gt; be testing behavior.  Tools can drive the way we think.  So remember, &lt;em&gt;you&lt;/em&gt; dominate the tool; don&amp;#8217;t let the tool dominate you!&lt;/p&gt;


	&lt;h2&gt;But aren&amp;#8217;t hand-rolled mocks fragile?&lt;/h2&gt;


	&lt;p&gt;Yes, they can be.  If you are mocking a class or interface that it very volatile (i.e. you are adding new methods, or modifying method signatures a lot) then you&amp;#8217;ll have to go back and maintain all your hand-rolled mocks every time you make such a change.  On the other hand, if you use a mocking framework, the framework will take care of that for you unless one of the methods you are specifically testing is modified.&lt;/p&gt;


	&lt;p&gt;But here&amp;#8217;s the thing.  Interfaces should not usually be volatile.  They should not continue to grow and grow, and the methods should not change much.  OK, I realize that&amp;#8217;s wishful thinking.  But, &lt;em&gt;yes&lt;/em&gt;, I wish for the kind of a design in which interfaces are the &lt;em&gt;least&lt;/em&gt; volatile source files that you have.  That&amp;#8217;s kind of the point of interfaces after all&amp;#8230;  You create interfaces so that you can separate volatile implementations from non-volatile clients.  (Or at least that&amp;#8217;s one reason.)&lt;/p&gt;


	&lt;p&gt;So if you are tempted to use a mocking framework because you don&amp;#8217;t want to maintain your volatile interfaces, perhaps you should be asking yourself the more pertinent question about why your interfaces are so volatile.&lt;/p&gt;


	&lt;p&gt;Still, if you&amp;#8217;ve got volatile interfaces, and there&amp;#8217;s just no way around it, then a mocking framework may be the right choice for you.&lt;/p&gt;


	&lt;h2&gt;So here&amp;#8217;s the bottom line.&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;It&amp;#8217;s easy to roll your own stubs and mocks. Your &lt;span class="caps"&gt;IDE&lt;/span&gt; will help you and they&amp;#8217;ll be easier and more natural to read than the dots and parentheses that the mocking frameworks impose upon you.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;Mocking frameworks drive you towards testing choreography rather than behavior.  This can be useful, but it&amp;#8217;s not always appropriate.  And besides, even when you are testing choreography, the hand-rolled stubs and mocks are probably easier to write and read.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;There are special cases where mocking tools are &lt;em&gt;invaluable&lt;/em&gt;, specifically when you have to test choreography with objects that you have no source for or when your design has left you with a plethora of volatile interfaces.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Am I telling you to avoid using mocking frameworks?  No, not at all.  I&amp;#8217;m just telling you that &lt;em&gt;you&lt;/em&gt; should drive tools, tools should not drive you.&lt;/p&gt;


	&lt;p&gt;If you have a situation where a mocking tool is the right choice, by all means use it.   But don&amp;#8217;t use it because you think it&amp;#8217;s &amp;#8220;agile&amp;#8221;, or because you think it&amp;#8217;s &amp;#8220;right&amp;#8221; or because you somehow think you are supposed to.  And remember, hand-rolling often results in simpler tests without the litter of dots and parentheses!&lt;/p&gt;</description>
      <pubDate>Wed, 28 Oct 2009 18:12:16 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:55f13a22-2823-4ae4-bd47-d32a1759e267</guid>
      <author>Uncle Bob</author>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses</link>
      <category>Uncle Bob's Blatherings</category>
      <category>Agile Methods</category>
      <category>Clean Code</category>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by  Polo Ralph Lauren Pas Cher</title>
      <description>&lt;p&gt;Thanks for this beautiful website. I have enjoyed reading through a few of the articles.&lt;/p&gt;</description>
      <pubDate>Thu, 12 Jan 2012 20:02:04 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0680c5cc-06e6-4119-89a3-56db27be5b2c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-197500</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by iPhone contacts backup</title>
      <description>&lt;p&gt;We don&amp;#8217;t know when it will crashed and how the data and contacts lost on iPhone. So, the best way is backuping them to computer. So u can retrieve them when necessary.&lt;/p&gt;</description>
      <pubDate>Mon, 09 Jan 2012 00:08:12 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a8196df0-1a85-4905-ba16-433274cadcb3</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-196102</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by avi</title>
      <description>&lt;p&gt;?? ????&lt;/p&gt;</description>
      <pubDate>Tue, 27 Dec 2011 14:44:32 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:d17b3897-c12f-4799-a5e3-42d3c35a327d</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-192640</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by Cheap North Face Jackets</title>
      <description>&lt;p&gt;The perfect winter insulation should be ultra warm, extremely light and packable, and stay warm when wet.
&lt;a href="http://www.cheapnorthfacejacketsforwomen.com" rel="nofollow"&gt;Cheap North Face Jackets For Women&lt;/a&gt; No single 
insulation-not the classic goose down, not the best efforts of synthetic insulation makers-has met all three 
of those criteria, &lt;a href="http://www.cheapnorthfacejacketsforwomen.com" rel="nofollow"&gt;Cheap North Face Jackets&lt;/a&gt;and folks 
&lt;a href="http://www.cheapnorthfacejacketsforwomen.com" rel="nofollow"&gt;Cheap Womens North Face Jackets&lt;/a&gt;like hikers, skiers,
 and snowboarders have had to settle. But North Face claims its newest jacket technologyis the perfect
 compromise.&lt;/p&gt;</description>
      <pubDate>Fri, 09 Dec 2011 20:13:48 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:73403fd2-0740-4e19-adf4-dff28b601899</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-184706</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by Pablo M</title>
      <description>&lt;p&gt;I think that even&lt;/p&gt;


	&lt;p&gt;assertTrue(selection.isEmpty());&lt;/p&gt;


	&lt;p&gt;is cleaner than&lt;/p&gt;


	&lt;p&gt;assertThat(selection.size(), equalTo(0));&lt;/p&gt;</description>
      <pubDate>Fri, 02 Dec 2011 18:46:40 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4d82228e-28ad-49a3-9223-e251505de159</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-181187</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by 4x4center</title>
      <description>&lt;p&gt;Most think we are healthy and the money not the most important in life&lt;/p&gt;</description>
      <pubDate>Fri, 18 Nov 2011 06:25:15 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:843325de-664f-46cc-a403-e8cd061ddda0</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-175359</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by yoga</title>
      <description>&lt;p&gt;The most important thing is to maintain a high level of information people posts here and that makes the excellent site thanks&lt;/p&gt;</description>
      <pubDate>Wed, 16 Nov 2011 17:22:39 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:26e68cd9-a546-4ce7-bc6c-f98a0b909fba</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-174330</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by travels</title>
      <description>&lt;p&gt;Cool information you are right there&lt;/p&gt;</description>
      <pubDate>Wed, 16 Nov 2011 17:20:33 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:751d814e-3385-4cd9-a8f8-4a55ec3af2c2</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-174329</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by win4u</title>
      <description>&lt;p&gt;Thank you for all your help Cool blog really impressive&lt;/p&gt;</description>
      <pubDate>Wed, 16 Nov 2011 17:14:10 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a76cbd87-ce4d-4a4c-b922-609830b4b107</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-174327</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by xpt</title>
      <description>&lt;p&gt;Thank you for all your help Cool blog really impressive&lt;/p&gt;</description>
      <pubDate>Wed, 16 Nov 2011 17:09:27 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:11efb7fb-3ab8-43f3-8117-1fc46fc1eb6a</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-174326</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by Cheap Beats By Dre</title>
      <description>&lt;p&gt;bus today, make them &lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Cheap Beats By Dre&lt;/a&gt;miserable. One said: &amp;#8220;I ??am really unlucky it! I was packed &lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/beats-by-drdre-studio-c-89.html" rel="nofollow"&gt;Beats By Dre Studio&lt;/a&gt;in the car to flow production.&amp;#8221; One said: &amp;#8220;I ??called &lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/beats-by-drdre-solo-c-91.html" rel="nofollow"&gt;Beats By Dre Solo&lt;/a&gt;it bad luck! In I was packed car are pregnant.&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/beats-by-drdre-pro-c-90.html" rel="nofollow"&gt;Beats By Dre Pro&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Classic joke: I TVU
A university student&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dr dre&lt;/a&gt; caught by the enemy, the enemy tied him at the poles,&lt;a href="http://www.drdrebeatsheadphones-australia.com/justbeats-solo-purple-onear-headphones-with-controltalk-p-234.html" rel="nofollow"&gt;just beats solo headphones purple&lt;/a&gt; and then asked him: say, where are you? You do not say it electrocuted! S&lt;a href="http://www.drdrebeatsheadphones-australia.com/cheap-drdre-beats-studio-limited-edition-headphones-blackyellow-p-185.html" rel="nofollow"&gt;cheap dr.dre beats studio headphones balck/yellow&lt;/a&gt;tudents back to the enemy a word, the result was electrocuted, he said: I am TVU.&lt;a href="http://www.drdrebeatsheadphones-australia.com/cheap-beats-by-drdre-pro-performance-professional-headphones-white-p-192.html" rel="nofollow"&gt;Hot sale beats by dr dre pro  headphones&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 15 Nov 2011 01:50:29 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:da97960e-f084-44ad-8119-982642b493f6</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-172941</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by Bea</title>
      <description>&lt;p&gt;This is a cool post. Too much symbols is a distraction. It may not be so interesting. This offer is so interesting.
&lt;a href="http://www.squidoo.com/brother-pe770-embroidery-machine-with-usb-memory-stick-compatibility-review" rel="nofollow"&gt;brother pe770 reviews&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 14 Nov 2011 06:20:55 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:85255344-ff82-4d8f-a3ac-109e05c57f70</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-172563</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by christian louboutin</title>
      <description>&lt;p&gt;Great post, please write more about this, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!
Greate post,please write more about this,and I like it,I really enjoy reading you blog  popular distributed: a good article waiting for you!&lt;/p&gt;</description>
      <pubDate>Mon, 31 Oct 2011 08:03:34 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:356bbd28-4323-4f45-87f3-d3cdcf8268bc</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-166236</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by christian louboutin</title>
      <description>&lt;p&gt;Great post, please write more about this, and I like it. I really enjoy reading your blog popular distributed: a good article waiting for you!
Greate post,please write more about this,and I like it,I really enjoy reading you blog  popular distributed: a good article waiting for you!&lt;/p&gt;</description>
      <pubDate>Mon, 31 Oct 2011 08:00:32 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:036444b8-25f0-4c7c-b40b-9a42a32e93e1</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-166234</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by xsw123</title>
      <description>&lt;p&gt;&lt;a href="http://www.burberry-brand.com/index.php?main_page=index&amp;#38;cPath=4" rel="nofollow"&gt; &lt;strong&gt;??? ???&lt;/strong&gt;&lt;/a&gt;?1856???????????
 ????????1835??????????? 1924??&amp;#8221;&lt;a href="http://www.burberry-brand.com/index.php?main_page=index&amp;#38;cPath=1" rel="nofollow"&gt; &lt;strong&gt;??? ?&lt;/strong&gt;&lt;/a&gt;???&amp;#8221;???????????????????????????&lt;a href="http://www.burberry-brand.com" rel="nofollow"&gt; &lt;strong&gt;??????&lt;/strong&gt;&lt;/a&gt;?????&lt;a href="http://www.burberry-brand.com/index.php?main_page=index&amp;#38;cPath=2" rel="nofollow"&gt; &lt;strong&gt;??? ?&lt;/strong&gt;&lt;/a&gt; (&lt;a href="http://www.burberry-brand.com" rel="nofollow"&gt; &lt;strong&gt; Burberry&lt;/strong&gt;&lt;/a&gt;)&lt;a href="http://www.burberry-brand.com/index.php?main_page=index&amp;#38;cPath=3" rel="nofollow"&gt; &lt;strong&gt;??? ??&lt;/strong&gt;&lt;/a&gt;????1856?????????&lt;a href="http://www.burberry-brand.com/index.php?main_page=index&amp;#38;cPath=5" rel="nofollow"&gt; &lt;strong&gt;??? ??&lt;/strong&gt;&lt;/a&gt;??????????&lt;a href="http://www.burberry-brand.com" rel="nofollow"&gt; &lt;strong&gt;??? &lt;/strong&gt;&lt;/a&gt;??????????????????? ????????????&lt;a href="http://www.burberry-brand.com" rel="nofollow"&gt; &lt;strong&gt;?&lt;/strong&gt;&lt;/a&gt; ???????????&lt;a href="http://www.burberry-brand.com" rel="nofollow"&gt; &lt;strong&gt;??? ???&lt;/strong&gt;&lt;/a&gt;.
&lt;br&gt;
&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=1&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ?&lt;/strong&gt;&lt;/a&gt;?&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;????&lt;/strong&gt;&lt;/a&gt;???????????&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=2&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ??&lt;/strong&gt;&lt;/a&gt;????????&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=3&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ?&lt;/strong&gt;&lt;/a&gt;1968???????&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=4&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ?&lt;/strong&gt;&lt;/a&gt;???????????&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;????&lt;/strong&gt;&lt;/a&gt;?????&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=5&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ?&lt;/strong&gt;&lt;/a&gt;??????? ?? ???????&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=6&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ?&lt;/strong&gt;&lt;/a&gt;??????&lt;a href="http://www.outletmoncler2.com/index.php?main_page=index&amp;#38;cPath=8&amp;#38;zenid=9a1f1e47f8d06d6dcbd514ba36a181a0" rel="nofollow"&gt; &lt;strong&gt;?? ???&lt;/strong&gt;&lt;/a&gt;?????&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;??????&lt;/strong&gt;&lt;/a&gt; ?????5 ?????????TOMS ???????????&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;??????&lt;/strong&gt;&lt;/a&gt;???????????????????&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;??????&lt;/strong&gt;&lt;/a&gt;??????Supra ?????????&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;????&lt;/strong&gt;&lt;/a&gt;??????????&lt;a href="http://www.outletmoncler2.com " rel="nofollow"&gt; &lt;strong&gt;????&lt;/strong&gt;&lt;/a&gt;??&lt;/p&gt;</description>
      <pubDate>Sun, 30 Oct 2011 04:31:23 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3d64872e-a0a3-40d9-81b9-67f6e81817a2</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-165677</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by sweet4fun</title>
      <description>&lt;p&gt;I think the world wants it it was like in the movies all come true at the end&lt;/p&gt;</description>
      <pubDate>Fri, 28 Oct 2011 10:25:43 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:0d29ce5b-6d5b-47cb-a612-65a3190ce5c2</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-165188</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by spaland</title>
      <description>&lt;p&gt;I believe it will happen we jump at every medicine every year there&amp;#8217;s something new&lt;/p&gt;</description>
      <pubDate>Fri, 28 Oct 2011 10:23:48 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:72d3fa6f-39fe-42a6-a64c-aeb5e9cd8024</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-165187</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by zimmerlove</title>
      <description>&lt;p&gt;I wish it would happen that we can live more happily for many years&lt;/p&gt;</description>
      <pubDate>Fri, 28 Oct 2011 10:21:13 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e9738c1e-9cf2-4a7e-a782-c5580858ea8a</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-165186</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by ytvinfo</title>
      <description>&lt;p&gt;You&amp;#8217;re a hundred percent so how long we can live another 100 years ahead&lt;/p&gt;</description>
      <pubDate>Fri, 28 Oct 2011 10:16:36 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d57736d1-f303-4ac9-bf3b-d69c983a1a1d</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-165185</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by getmarrie</title>
      <description>&lt;p&gt;The world is a wonderful new day there&amp;#8217;s something amazing&lt;/p&gt;</description>
      <pubDate>Fri, 28 Oct 2011 10:14:13 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:266e6f7a-7424-4361-9a98-6142f6b0c03e</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-165184</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by ???????</title>
      <description>&lt;p&gt;Manual Mocking is really different nowadays than the time you wrote this post. I hope also other things will change too.&lt;/p&gt;</description>
      <pubDate>Sun, 23 Oct 2011 11:56:40 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:13935853-f92f-403c-826a-5cc0bb52c37c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-161316</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by ???????</title>
      <description>&lt;p&gt;thanks. dots are very persistent.&lt;/p&gt;</description>
      <pubDate>Sun, 23 Oct 2011 11:54:53 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b42082de-9647-43d8-980a-c6d9722f7676</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-161315</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by discount north face jackets</title>
      <description>&lt;p&gt;You need to be careful when buying &lt;a href="http://www.thenorthfaceoutlet.biz" rel="nofollow"&gt;&lt;strong&gt;discount north face jackets&lt;/strong&gt;&lt;/a&gt; from &lt;a href="http://www.thenorthfaceoutlet.biz" rel="nofollow"&gt;&lt;strong&gt;the north face outlet&lt;/strong&gt;&lt;/a&gt; online,where anything goes.&lt;/p&gt;</description>
      <pubDate>Fri, 21 Oct 2011 03:10:28 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:bd16138f-a696-4de2-8ce7-b7cccdf67070</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-160653</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by moncler jacken</title>
      <description>&lt;p&gt;Moncler shorter coat will be founded for at equivalent time genders &lt;a href="http://www.monclercheapeststore.com" rel="nofollow"&gt;moncler jacken&lt;/a&gt;and would definitely be a evidence for the process brute within of the people, &lt;a href="http://www.monclercheapeststore.com" rel="nofollow"&gt;moncler jacken&lt;/a&gt;that is definitely substantially appreciated by all of. every particular person and everybody who possess a Moncler jacket crown knows just what process will be &lt;a href="http://www.monclercheapeststore.com" rel="nofollow"&gt;moncler jacken&lt;/a&gt;and holding these sorts of apparels is really a marking in the classy plus sassy person.&lt;a href="http://www.monclercheapeststore.com" rel="nofollow"&gt;moncler jacken&lt;/a&gt; how you dress way up is the way one usually judges your lifestyle and in case you actually add some Moncler crown for the attire,                                             &lt;a href="http://www.monclercheapeststore.com" rel="nofollow"&gt;moncler jacken&lt;/a&gt;chances are you&amp;#8217;ll probable always be reflecting your personal self as becoming &lt;a href="http://www.monclercheapeststore.com/moncler-baume-p-360.html" rel="nofollow"&gt;moncler baume&lt;/a&gt;any gentleman and also women which includes tastes and magnificence.&lt;/p&gt;</description>
      <pubDate>Sat, 15 Oct 2011 02:29:07 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:54affea2-5da3-4f3c-a4d2-8fa248bad3ef</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-156907</link>
    </item>
    <item>
      <title>"Manual Mocking: Resisting the Invasion of Dots and Parentheses" by Christian</title>
      <description>&lt;p&gt;ass dfgd78s978s8sss&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:21:37 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b57a3f8d-5e02-42bc-b3cc-2839a5b1e36e</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/28/manual-mocking-resisting-the-invasion-of-dots-and-parentheses#comment-153977</link>
    </item>
  </channel>
</rss>

