<?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: TDDing an Interface - a Twitter influenced discussion</title>
    <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>TDDing an Interface - a Twitter influenced discussion</title>
      <description>&lt;h2&gt;Background&lt;/h2&gt;
I&amp;#8217;ve collected a few quick notes regarding &lt;span class="caps"&gt;TDD&lt;/span&gt; and interfaces (as in Java/C# or C++ classes with all pure virtual methods). You dynamic-language-using-types (near irony intentional) can read and laugh to yourselves! You don&amp;#8217;t need stinking interfaces, right?
&lt;p/&gt;
Note, these are based on a few questions from someone I follow on twitter. I considered leaving out the original poster, but since it&amp;#8217;s on twitter, I guess that&amp;#8217;s not really going to stay hidden. And, quite frankly, his questions are pretty good and quite common.

	&lt;p&gt;I&amp;#8217;m interested in seeing what other people have to say about this.&lt;/p&gt;


Here&amp;#8217;s the original question from &lt;a href="http://twitter.com/GBGames"&gt;@GBGames&lt;/a&gt;:
&lt;blockquote&gt;
When TDDing, I see info on using interfaces, but how do interfaces get created through &lt;span class="caps"&gt;TDD&lt;/span&gt;? How do you unit test your way to an interface?
&lt;/blockquote&gt;

&lt;h2&gt;Interfaces and &lt;span class="caps"&gt;TDD&lt;/span&gt;&lt;/h2&gt;
There are several reasons an interface comes up while practicing &lt;span class="caps"&gt;TDD&lt;/span&gt;, here are two:
&lt;ul&gt;&lt;li&gt;You have some existing code that has a concrete dependency on something and you want to remove that relationship.&lt;/li&gt;
&lt;li&gt;You are working on new production code, taking a &lt;a href="http://martinfowler.com/articles/mocksArentStubs.html#SoShouldIBeAClassicistOrAMockist"&gt;mockist&lt;/a&gt; approach and you want to create an object, inject dependencies represented by test-doubles that implement interfaces that do not yet exist.&lt;/li&gt;&lt;/ul&gt;

	&lt;p&gt;&lt;a href="http://twitter.com/GBGames"&gt;@GBGames&lt;/a&gt; goes on to write (remember, this was in Twitter, so I left the abbreviations and such as is):
&lt;blockquote&gt;
Game uses HardwareLayer. HL used libSDL but don&amp;#8217;t need &lt;span class="caps"&gt;SDL&lt;/span&gt; for unit tests so I wanted &lt;span class="caps"&gt;IHL&lt;/span&gt; for a mockHL. But how to get &lt;span class="caps"&gt;IHL&lt;/span&gt;? Most info I find assumes interface exists or class exists to extract interface. I feel like I&amp;#8217;m trying to do 2 things at once.
&lt;/blockquote&gt;&lt;/p&gt;


This additional information suggests something like the following:
&lt;p/&gt;
&lt;img src="http://yuml.me/diagram/scale:50;scruffy/class/%5BGame%5D-%3E%5BHardwareLayer%5D,%20%5BHardwareLayer%5D-%3E%5BLibSDL%5D.jpg" border="0" /&gt;
&lt;p/&gt;

&lt;p/&gt;&lt;a href="http://twitter.com/GBGames"&gt;@GBGames&lt;/a&gt; suggests using an IHardwareLayer to fully get rid of libSDL, which is a fine approach. Another approach is testing the HardwareLayer directly (with unit tests on the HardwareLayer) and passing in an adapter to libSDL (basically an ILibSdl):
&lt;img src="http://yuml.me/diagram/scale:50;scruffy;dir:lr/class/%5BHardwareLayer%5D-%3E%5BILibSDL%5D,%20%5BILibSDL%5D%5E%5BRealLibSdl%5D,%20%5BILibSDL%5D%5E%5BTestDoubleLibSdl%5D,%20%5BRealLibSdl%5D-%3E%5BLibSDL%5D.jpg" border="0" /&gt;
&lt;h2&gt;What are we Testing?&lt;/h2&gt;
If the goal is to test responsibility/functionality that belongs in the Game, then creating the IHardwareLayer is the right thing to do. The game only cares about the hardware layer and not the libSDL. If the goal is to test responsibility/functionality that belongs to the Hardware Layer, then that&amp;#8217;s where we should start.

However, this decision is academic. Why? &lt;a href="http://twitter.com/GBGames"&gt;@GBGames&lt;/a&gt;&amp;#8217;s original question was, in a nutshell:
&lt;blockquote&gt;
When using &lt;span class="caps"&gt;TDD&lt;/span&gt; to test a class that depends on an interface that does not yet exist, how do you go about doing that?
&lt;/blockquote&gt;

He observed, correctly, that it seems like you are doing two things at the same time, and you are:
	&lt;ul&gt;
	&lt;li&gt;What methods exist in the interface&lt;/li&gt;
		&lt;li&gt;How will the class under test use that interface.&lt;/li&gt;
	&lt;/ul&gt;


So how to proceed? &lt;a href="http://schuchert.wikispaces.com/Mockito.LoginServiceExample"&gt;Here&amp;#8217;s an example&lt;/a&gt; I posted a little while back that demonstrates the use of Mockito. My original intent was to demonstrate Mockito. However, that example also shows how, over a series of tests, I:
	&lt;ul&gt;
	&lt;li&gt;Create interfaces&lt;/li&gt;
		&lt;li&gt;Add methods to those interfaces needed to add functionality&lt;/li&gt;
		&lt;li&gt;Set expectations on the use of those interfaces&lt;/li&gt;
	&lt;/ul&gt;


There are a few important points from the original question:
	&lt;ul&gt;
	&lt;li&gt;The Hardware layer, apparently, does not yet exist.&lt;/li&gt;
		&lt;li&gt;By extension, the interface does not yet exist.&lt;/li&gt;
		&lt;li&gt;When writing the real hardware layer class, it will ultimately have to implement all of the methods in the interface created while TDDing the game class&lt;/li&gt;
		&lt;li&gt;Writing the actual hardware layer class will require TDDing it, and passing in an ILibSDL class. This is not strictly necessary, but if you want to test the HardwareLayer without using the real lib &lt;span class="caps"&gt;SDL&lt;/span&gt;, that&amp;#8217;s your best option.&lt;/li&gt;
	&lt;/ul&gt;


&lt;h2&gt;Now to get more concrete&lt;/h2&gt;
So let&amp;#8217;s assume that in fact we are starting from scratch on a game and we want to develop it without requiring a real hardware layer. Is it reasonable to assume the use of a hardware layer before we&amp;#8217;ve even started writing the game? I say yes. What do you say?

So I&amp;#8217;d need to come up with some tests (test categories) to get started (I&amp;#8217;m just making this up, I don&amp;#8217;t have any idea what GBGames is actually working on right now):
	&lt;ul&gt;
	&lt;li&gt;Creating a game properly initializes the hardware layer&lt;/li&gt;
		&lt;li&gt;Creating a game properly acquires some kind of game configuration information, which is used to configure the hardware layer (e.g., preferred resolution, color depth, anti-aliasing, ...)
(Do you see that even these two test categories actually suggest more than just two classes if you consider the single responsibility principle.)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;This is enough to start to express my intent. Almost time to start with something.&lt;/p&gt;


One final set of questions before I get really started: 
	&lt;ul&gt;
	&lt;li&gt;One assertion per test?&lt;/li&gt;
		&lt;li&gt;&lt;span class="caps"&gt;TDD&lt;/span&gt; or &lt;span class="caps"&gt;BDD&lt;/span&gt; (At the very lest, looks like we&amp;#8217;re staring outside in)&lt;/li&gt;
		&lt;li&gt;...&lt;/li&gt;
	&lt;/ul&gt;


&lt;h3&gt;Test 1: Initializing&lt;/h3&gt;
How about when I create a game, I want to make sure that it sends some basic initialization to the HardwareLayer:
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;package com.om.example.gameandhw;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

import org.junit.Test;

public class GameTest {
  @Test
  public void itShouldInitializeHardwareLayerDringGameConstruction() {
    IHardwareLayer layer = mock(IHardwareLayer.class);
    new Game(layer);
    verify(layer, times(1)).setResolution(1024, 768);
    verify(layer, times(1)).setColorDepth(8);
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

Note that this is the final test. I had to stop on each of the four lines:
	&lt;ul&gt;
	&lt;li&gt;On the first line, I had to create and interface IHardwareLayer, no methods.&lt;/li&gt;
		&lt;li&gt;On the first line, I also had to stop to statically import the mock method.&lt;/li&gt;
		&lt;li&gt;On the second line I had to stop and create the Game class.&lt;/li&gt;
		&lt;li&gt;On the second line I had to stop and add a constructor with a parameter (the injected IHardwareLayer, for which I use the Mockito library to create a test-double, which I am using as a Spy)&lt;/li&gt;
		&lt;li&gt;On the third line I had to stop to add the method setResolution to the IHardwareLayer interface.&lt;/li&gt;
		&lt;li&gt;On the third line I had to stop to add the static import of the verify method.&lt;/li&gt;
		&lt;li&gt;On the fourth line I had to stop to add the setColorDepth method to the IHardwareLayer interface.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;(Trust me, it too&lt;i&gt; &lt;b&gt;much&lt;/b&gt;&lt;/i&gt; longer to type that list than to do the work. The actual work was well under 30 seconds to do all of that.)&lt;/p&gt;


After this test compiled, but did not pass, I had to write the method for Game. Here are the other two java files I created as a result of this single test (getting the test to pass the first time was included in that 30 seconds above):
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;package com.om.example.gameandhw;

public interface IHardwareLayer {
  void setResolution(int widthInBits, int heightInBits);
  void setColorDepth(int bitsPerChannel);
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;package com.om.example.gameandhw;

public class Game {
  public Game(IHardwareLayer layer) {
    layer.setResolution(1024, 768);
    layer.setColorDepth(8);
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Now I have&lt;i&gt; &lt;b&gt;no&lt;/b&gt;&lt;/i&gt; idea if this is even beginning to make any sense for the original problem. This is where having a pair partner with expertise on the game requirements (and maybe some idea about this libSDL) would greatly help.&lt;/p&gt;


	&lt;p&gt;Notice, however, that as I try to write the Game class, I am adding methods to the IHardwareLayer class &lt;span class="caps"&gt;AND&lt;/span&gt; figuring out how the game will interact with those methods.&lt;/p&gt;


	&lt;p&gt;Hope this helps GBGames. I also hope to see some discussion in the comments section.&lt;/p&gt;


	&lt;p&gt;Brett&lt;/p&gt;</description>
      <pubDate>Mon, 08 Jun 2009 00:26:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f9cbb22e-044a-4ca9-bc67-908d2e23944f</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>interface</category>
      <category>TDD</category>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by beats by dr dre</title>
      <description>&lt;p&gt;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 03:22:39 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:b10efbb8-270f-4029-9608-fcb194eeb558</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-173052</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Moncler store</title>
      <description>&lt;p&gt;&lt;a href="http://www.mxeg.org/" rel="nofollow"&gt;doudoune moncler Pas Cher&lt;/a&gt; Thomas is characterized by a pattern of red and white strips on chest with a logo patch. drawstring hood,two side vertical zip pockets at waist and button down with hidden zip closure.There is also a logo patch on sleeve. As a fashion leader, Eric has a pattern of white and green strips with Moncler logo patch on the left sleeve. Full white zip closure is in front while two zip pockets at Moncler online store.&lt;/p&gt;</description>
      <pubDate>Sun, 13 Nov 2011 22:11:18 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4deca078-747f-4189-8d27-c289a9815e45</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-172325</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Tips For Bowling</title>
      <description>&lt;p&gt;There is only one thing which can master the perplexed stuff of epic material into unity; and that is, an ability to see in particular human experience some significant symbolism of man&amp;#8217;s general destiny.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Oct 2011 12:29:47 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1932127f-e26e-460c-85ef-058f1bb0d87d</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-159095</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by casque dr dre</title>
      <description>&lt;p&gt;&lt;a href="http://www.beatsbydre-france.fr/" rel="nofollow"&gt;casque dr dre&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/" rel="nofollow"&gt;cher casque beats by dre&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/" rel="nofollow"&gt;beats casque distributors&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/" rel="nofollow"&gt;casque beats by dre online&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/" rel="nofollow"&gt;beats by dr dre casque&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.beatsbydre-france.fr/nouveau-style-drdre-beats-c-85.html" rel="nofollow"&gt;nouveau style dr dre beats&lt;a&gt;
&lt;a href="http://www.beatsbydre-france.fr/nouveau-style-drdre-beats-c-85.html" rel="nofollow"&gt;cher nouveau arriver dr dre beats&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/beats-by-drdre-studio-spiderman-justin-bieber-&#233;dition-sp&#233;ciale-p-294.html" rel="nofollow"&gt;beats by dr dre spiderman casque&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/beats-by-drdre-studio-spiderman-justin-bieber-&#233;dition-sp&#233;ciale-p-294.html" rel="nofollow"&gt;casque spiderman beats by dre&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.beatsbydre-france.fr/beats-by-drdre-studio-superman-dwight-howard-&#233;dition-sp&#233;ciale-p-295.html" rel="nofollow"&gt;beats by dr dre superman casque&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/beats-by-drdre-studio-superman-dwight-howard-&#233;dition-sp&#233;ciale-p-295.html" rel="nofollow"&gt;superman beats by dre casque&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.beatsbydre-france.fr/casque-beats-by-drdre-studio-chrome-colorware-edition-limit&#233;e-p-296.html" rel="nofollow"&gt;casque chrome colorware&lt;/a&gt;
&lt;a href="http://www.beatsbydre-france.fr/casque-beats-by-drdre-studio-chrome-colorware-edition-limit&#233;e-p-296.html" rel="nofollow"&gt;casque beats by dre chrome colorware&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Cheap Beats By Dre&lt;/a&gt;
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Dr Dre Headphones&lt;/a&gt;
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Cheap Monster Beats Headphones&lt;/a&gt;
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Beats By Dr Dre&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/new-style-beats-by-drdre-c-69.html" rel="nofollow"&gt;New Style Beats By Dre Headphones&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/beats-by-drdre-studio-c-89.html" rel="nofollow"&gt;Cheap Dr Dre Studio Headphones&lt;/a&gt;
&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;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/beats-by-drdre-pro-c-90.html" rel="nofollow"&gt;Cheap Dr Dre Pro Headphones&lt;/a&gt;
&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;&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk/beats-by-drdre-solo-c-91.html" rel="nofollow"&gt;Cheap Dr Dre Solo Headphones&lt;/a&gt;
&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;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dr dre&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dre sale&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;cheap beats by dre&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dre store&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;high quality headphones&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;new design headphones&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.drdrebeatsheadphones-australia.com/cheap-beats-by-drdre-studio-limited-edition-colorful-champagne-p-180.html" rel="nofollow"&gt;cheap beats by dr.dre studio limited edition-colorful champagne&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com/cheap-beats-by-drdre-studio-limited-edition-colorful-champagne-p-180.html" rel="nofollow"&gt;cheap beats by dr.dre colorful champagne&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 16 Oct 2011 22:00:46 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1dd315e8-8cab-461d-af69-cb82350ed212</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-157494</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by bagsupplyer</title>
      <description>&lt;p&gt;&lt;a href="http://www.bagsupplyer.com/Coach-n628/" rel="nofollow"&gt;wholesale women replicate Coach backpacks more order,more discount&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 07 Sep 2011 05:48:17 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ee495f2e-859d-4710-95f4-6e077e5cb59a</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-138080</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by ssf@fd.com</title>
      <description>&lt;p&gt;&lt;a href="http://www.cnkorlen.com/molded-case-circuit-breaker/molded-case-circuit-breaker-knm3.htm" rel="nofollow"&gt;Molded Case Circuit Breaker&lt;/a&gt; rated insulation voltage of this &lt;a href="http://www.cnkorlen.com/" rel="nofollow"&gt;circuit breaker&lt;/a&gt; is 750V which is applicable for the electricity distribution net of AC 50Hz It is used to &lt;a href="http://www.cnkorlen.com/miniature-circuit-breaker/mini-circuit-breaker-knb6-63.htm" rel="nofollow"&gt;Mini Circuit Breaker&lt;/a&gt; power and protect the line and power apparatus from being overload and short-circuit protection of the &lt;a href="http://www.cnkorlen.com/rcbo/mini-rcbo.htm" rel="nofollow"&gt;mini rcbo&lt;/a&gt;. This &lt;a href="http://www.cnkorlen.com/residual-current-circuit-breaker/residual-current-circuit-breaker-knl7-63.htm" rel="nofollow"&gt;Residual Current Circuit Breaker&lt;/a&gt;can be installed vertically and horizontally.&lt;a href="http://www.cnkorlen.com/rcbo/rcbo-knbl1-32.htm" rel="nofollow"&gt;rcbo&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 29 Aug 2011 22:17:07 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:60fd46c1-70d2-45b0-ae79-2eeb9d54a1f2</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-134072</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by beats by dr   dre</title>
      <description>&lt;p&gt;&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dr&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;dre
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dre&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;sale
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;cheap beats by&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;dre
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;beats by dre&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;store
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;high quality&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;headphones
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;new design&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;headphones&lt;/p&gt;


	&lt;p&gt;&lt;a&gt;


	&lt;p&gt;drdre-studio-limited-edition-colorful-champagne-p-180.html&amp;#8221;&amp;gt;cheap beats&lt;/p&gt;


	&lt;p&gt;by dr.dre studio limited edition-colorful champagne&lt;/p&gt;&lt;/a&gt;
&lt;a&gt;


	&lt;p&gt;drdre-studio-limited-edition-colorful-champagne-p-180.html&amp;#8221;&amp;gt;cheap beats&lt;/p&gt;


	&lt;p&gt;by dr.dre colorful champagne&lt;/p&gt;&lt;/a&gt;
&lt;a&gt;


	&lt;p&gt;drdre-studio-limited-edition-colorful-champagne-p-180.html&amp;#8221;&amp;gt;colorful&lt;/p&gt;


	&lt;p&gt;champagne headphones&lt;/p&gt;&lt;/a&gt;
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Cheap Beats By&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Dre
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Dr Dre&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Headphones
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Cheap Monster&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Beats Headphones
&lt;a href="http://www.cheap-monsterbeatsbydrdre.co.uk" rel="nofollow"&gt;Beats By Dr&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Dre&lt;/p&gt;


	&lt;p&gt;&lt;a&gt;


	&lt;p&gt;-drdre-c-69.html&amp;#8221;&amp;gt;New Style Beats By Dre Headphones&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a&gt;


	&lt;p&gt;studio-c-89.html&amp;#8221;&amp;gt;Cheap Dr Dre Studio Headphones&lt;/p&gt;&lt;/a&gt;
&lt;a&gt;


	&lt;p&gt;studio-c-89.html&amp;#8221;&amp;gt;Beats By Dre Studio&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a&gt;


	&lt;p&gt;-c-90.html&amp;#8221;&amp;gt;Cheap Dr Dre Pro Headphones&lt;/p&gt;&lt;/a&gt;
&lt;a&gt;


	&lt;p&gt;-c-90.html&amp;#8221;&amp;gt;Beats By Dre Pro&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a&gt;


	&lt;p&gt;solo-c-91.html&amp;#8221;&amp;gt;Cheap Dr Dre Solo Headphones&lt;/p&gt;&lt;/a&gt;
&lt;a&gt;


	&lt;p&gt;solo-c-91.html&amp;#8221;&amp;gt;Beats By Dre Solo&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 26 Aug 2011 21:30:34 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a946a5b4-d1ea-4857-b484-0630223a12de</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-133178</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by beats by dr dre studio</title>
      <description>&lt;p&gt;Designed with unique features that you won&#8217;t find on ordinary beats by dr dre pro detox with the Beats by Dr. Dre Studio headphones you not only get incredible sound, but advanced, useful function to make your listening experience the best it can be. With advanced speaker design, powered amplification, and active noise canceling, the headphones delivers all the power, clarity and deep bass today&#8217;s top artists and producers want you to hear.&lt;/p&gt;</description>
      <pubDate>Tue, 16 Aug 2011 01:32:24 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e641a723-c80e-4a7b-992e-915318ce8801</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-129064</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by cookies gift baskets</title>
      <description>&lt;p&gt;hmm ,i&amp;#8217;m not sure if this is what i&amp;#8217;m looking for but anyway this is interresting and could be useful some day,thanks for taking time to write such cool stuff&lt;/p&gt;</description>
      <pubDate>Sun, 19 Jun 2011 11:36:42 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:864a802c-bbb0-4c60-a700-57aa3ecc5d51</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-112495</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by okey oyunu oyna </title>
      <description>&lt;p&gt;Very very nice.&lt;/p&gt;


	&lt;p&gt;internette g&#246;r&#252;nt&#252;l&#252; olarak &lt;a href="http://www.okeyoyunu-oyna.com" rel="nofollow"&gt;okey oyunu oyna&lt;/a&gt;, ger&#231;ek kisilerle tanis,
 turnuva heyecanini yasa.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Apr 2011 14:43:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5bf6cf72-fe5e-4a12-8eb5-3efa9ed3df22</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-92774</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Mulberry Outlet</title>
      <description>&lt;p&gt;I bookmarked your blog but I hope you will post more&#8230;&lt;/p&gt;</description>
      <pubDate>Fri, 15 Apr 2011 04:09:43 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1a57d5fe-41e8-4570-acbd-5630e28da9d4</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-85489</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Solid State Relay</title>
      <description>&lt;p&gt;This article is very usefull for me! I can see that you are putting a lots of efforts into your blog. I will keep watching in your blog, thanks.&lt;/p&gt;</description>
      <pubDate>Mon, 28 Feb 2011 23:44:19 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:bbb0c905-464d-49ff-b6ec-b564044b7f75</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-67623</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by http://www.whiteiphone4transformer.com</title>
      <description>&lt;p&gt;Look for the &lt;a href="http://www.whiteiphone4transformer.com" rel="nofollow"&gt;white iphone 4 &lt;/a&gt;avaiable online store? We may search on net for what you need. &lt;br&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 23 Dec 2010 20:39:45 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:907e5cb1-9cc4-4416-b1ce-e38aa70b1527</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-51541</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Pandora </title>
      <description>&lt;p&gt;your initial website design may need to be frames based because you don&#8217;t have time to build an Ajax framework.&lt;/p&gt;</description>
      <pubDate>Thu, 02 Dec 2010 02:01:33 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:5332d39b-0186-4838-9816-a48f9764c311</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-45212</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Dog bark collar</title>
      <description>&lt;p&gt;verify(layer, times(1)).setResolution(1024, 768); verify(layer, times(1)).setColorDepth(8);&lt;/p&gt;


	&lt;p&gt;This is why I do not like this kind of test. The above simply duplicates the constructor.&lt;/p&gt;</description>
      <pubDate>Fri, 26 Nov 2010 09:42:53 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:74e055b3-00ff-4b15-bc5a-27b929a19870</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-43343</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Designer Bags</title>
      <description>&lt;p&gt;cool article!Thanks for  nice sharing&lt;/p&gt;</description>
      <pubDate>Sat, 13 Nov 2010 23:05:24 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a3d2c929-e6e9-402c-9f35-f76097b43c86</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-40269</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by write my speech</title>
      <description>&lt;p&gt;Thank you for the schema presenting in the article, useful for my colege papers!&lt;/p&gt;</description>
      <pubDate>Tue, 09 Nov 2010 05:12:35 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a1eb5b8e-fda0-4926-85a2-a2efe86e7beb</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-39121</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by FLV extractor</title>
      <description>&lt;p&gt;fed uo with is&lt;/p&gt;</description>
      <pubDate>Wed, 07 Apr 2010 03:43:18 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8382f4b2-5c31-4b0a-a5f4-8fde6e9dccc2</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-9296</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Marcel Popescu</title>
      <description>&lt;p&gt;verify(layer, times(1)).setResolution(1024, 768);
verify(layer, times(1)).setColorDepth(8);&lt;/p&gt;


	&lt;p&gt;This is why I don&amp;#8217;t like this type of test&amp;#8230; the above simply duplicates the constructor; I fail to see how it helps in any but the most trivial way. Any time I want to change the implementation of the constructor, the test will have to change.&lt;/p&gt;</description>
      <pubDate>Mon, 06 Jul 2009 03:56:24 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1b72e52b-2538-4937-b776-abe49305e660</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3660</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Patrick Johnmeyer</title>
      <description>&lt;p&gt;Both &lt;a href="http://code.google.com/p/amop" rel="nofollow"&gt;amop&lt;/a&gt; and &lt;a href="http://code.google.com/p/googlemock" rel="nofollow"&gt; googlemock&lt;/a&gt; are reasonable frameworks for C++ mocking.&lt;/p&gt;</description>
      <pubDate>Mon, 15 Jun 2009 12:51:23 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:476c6034-deb4-4a3a-9826-72b937b6265d</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3573</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Brett L. Schuchert</title>
      <description>&lt;p&gt;&lt;b&gt;&lt;a href="http://www.gbgames.com/blog" rel="nofollow"&gt;GBGames&lt;/a&gt;&lt;b&gt; wrote:
&lt;blockquote&gt;
But at some point, something has to interface with the actual database, so is that glue code left untested in most projects?
&lt;/blockquote&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;


	&lt;p&gt;(FWIW, see below for some comments on mocking in C++.)&lt;/p&gt;


	&lt;p&gt;Well that is an option, but no I would not do that. In the case of the database, the vast majority of things getting tested do not depend on the database and therefore you can and should mock it out. An alternative is to use an in-memory database.&lt;/p&gt;


	&lt;p&gt;However, in the case of the database, you&amp;#8217;ll have a DAO (maybe) that needs to hit the database because that&amp;#8217;s its responsibility. So you&amp;#8217;ll have some tests that actually test that the DAO correctly uses the real database.&lt;/p&gt;


But here are a couple of things to keep in mind:
	&lt;ul&gt;
	&lt;li&gt;I should be able to run these frequently (daily at the very least, on demand for an impatient person even better).&lt;/li&gt;
		&lt;li&gt;I should be able to run them at the same time as other people.&lt;/li&gt;
		&lt;li&gt;I should be able to run them on my developer machine as well as, for example, a build box (or a neutral machine)&lt;/li&gt;
	&lt;/ul&gt;


In the case of databases, this suggest we do NOT use live data, we own the database or somehow manage to make many instances of the same test not conflict when run in parallel. This suggests database isolation, which you can achieve in many ways:
	&lt;ul&gt;
	&lt;li&gt;Each test execution has its own database&lt;/li&gt;
		&lt;li&gt;In-memory database&lt;/li&gt;
		&lt;li&gt;Each test execution uses its own user in the database and then performs a cascade delete after each test of that user&lt;/li&gt;
		&lt;li&gt;...&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;By analogy, you&amp;#8217;ll have some actual tests (notice how I&amp;#8217;ve not used the word unit yet) that really test the use of libSDL. Are these unit tests? Are these integration tests?&lt;/p&gt;


	&lt;p&gt;Frankly, I don&amp;#8217;t care what you call them. The question I ask is are they useful? If so, then great.&lt;/p&gt;


	&lt;p&gt;You&amp;#8217;re still going to have challenges because the underlying libSDL may require verification manually. You might end up with manual tests instead of automated tests. Or you might have a mix of automated and manual tests.&lt;/p&gt;


	&lt;p&gt;I take it libSDL is a COTS. So you are not strictly testing it (I assume), rather you are testing your&lt;i&gt; &lt;b&gt;use&lt;/b&gt;&lt;/i&gt; of it. That&amp;#8217;s a very different thing indeed. (If you are verifying just interaction, that you can do with a test-double.)&lt;/p&gt;


	&lt;p&gt;So how much of your use of it can be tested so that the window of manual or auto-assisted testing is small?&lt;/p&gt;


	&lt;p&gt;This is a case where you might, for example, render actual results and then run a test and compare (electronically) generated to expected results. This is not great, but it is an option. You could create some basic tests &amp;#8211; sort of like smoke tests. You make sure these pass before you, for example, hand them off to QA (if it is a separate organization).&lt;/p&gt;


	&lt;p&gt;What is libSDL? Or better yet, can you give a code snippet that uses it? Something that might be in your HardwareLayer class (the real one, not a test-double). Are you writing libSDL or is it a library? And when you provide that snippet, could you tell me what it is you would like to verify.&lt;/p&gt;


&lt;i&gt;&lt;b&gt;C++ Mocking Notes&lt;/b&gt;&lt;/i&gt;&lt;p /&gt;
Ok, I have not used a tool for C++. There are some and I&amp;#8217;d be interested in comments/recommendations. But here are  a few things I&amp;#8217;d keep in mind:
	&lt;ul&gt;
	&lt;li&gt;Feel free to inline virtual methods! Normally you should not do this, but it&amp;#8217;s for a test so it&amp;#8217;ll just make the .o for the test file bigger. It will not impact the real system.&lt;/li&gt;
		&lt;li&gt;Create test doubles in the same file as the test file. Test-doubles should be small and focused so you won&amp;#8217;t need to share them across tests. If you do want to do that, it&amp;#8217;s OK but don&amp;#8217;t start there. It&amp;#8217;s reasonable to have one or more unique test doubles PER TEST METHOD. When you use a mocking library you&amp;#8217;re doing that anyway. You may not notice it.&lt;/li&gt;
		&lt;li&gt;If you have a complex interface (you should not, read up on the interface segregation principle), then create a test class that fully implements the interface with stubbed methods. The your test-doubles implement that. This way, if you change an interface, you really should only need to change that one test-double base class and keep things compiling.&lt;/li&gt;
		&lt;li&gt;You can simplify your tests by allowing many test classes per unit under test. Group by common setup. This comes from behavior driven development. I like this style. When I&amp;#8217;m teaching TDD, I often move to this approach (I always mention it).&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Wed, 10 Jun 2009 23:20:57 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3c15c49a-e996-41a4-b15a-ef2c280c2307</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3533</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by GBGames</title>
      <description>&lt;p&gt;As I&amp;#8217;ve said on Twitter (and tried to say in a comment that was eaten by spam filters apparently), thanks for the insight! I&amp;#8217;ve learned a lot, and this post got me looking into using test-doubles in ways I haven&amp;#8217;t seen before. I&amp;#8217;ve been able to start working on my own project using the ideas presented here, although I quickly realized that I&amp;#8217;ll need to find a nice C++ mock framework. Manual mocks are tedious and limited compared to the power Mockito has in your example.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;*
Writing the actual hardware layer class will require TDDing it, and passing in an ILibSDL class. This is not strictly necessary, but if you want to test the HardwareLayer without using the real lib SDL, that&#8217;s your best option.
*&lt;/b&gt;&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s pretend libSDL was a live database in the hopes that it makes it easier to picture for non-game developers. In unit tests, we don&amp;#8217;t want to use the live data, so we create a test-double to pretend to be the database. So far, so good. But at some point, something has to interface with the actual database, so is that glue code left untested in most projects?&lt;/p&gt;


	&lt;p&gt;In this case, I know in C++ I can have multiple implementation files. If some parts of HardwareLayer can be unit tested, but other parts use libSDL, would it be expected that an implementation file can be set in a special part of the build directory structure so that the real project uses it but the test project does not even know of it?&lt;/p&gt;


	&lt;p&gt;I feel like I&amp;#8217;m otherwise going to keep pushing libSDL into abstractions forever, but that&amp;#8217;s probably my inexperience with TDD and unit testing talking.&lt;/p&gt;</description>
      <pubDate>Wed, 10 Jun 2009 22:07:27 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:0e5f812c-4c90-41e4-a838-08b9b602acf2</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3532</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by justin davies</title>
      <description>&lt;p&gt;Great stuff Brett, very interesting. I found it hard to pick up mocking interfaces as a design starting point when beginning TDD and I can imagine others experiencing the same. The method you&amp;#8217;ve illustrated is definitely the way to go.
I found my groove when moving to context specifications as for me it makes the process more expressive &amp;#8211; I&amp;#8217;ve put something together that illustrates the above code using context specifications: &lt;a href="http://www.beingnew.net/2009/06/driving-design-of-interfaces.html" rel="nofollow"&gt;http://www.beingnew.net/2009/06/driving-design-of-interfaces.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 09 Jun 2009 11:03:10 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7e7cc2bf-1ff0-4579-8c5a-2f2bc1bed9bf</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3516</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Brett L. Schuchert</title>
      <description>&lt;p&gt;Is there more to come? In the real system, I&amp;#8217;m sure there will be, for this example, I don&amp;#8217;t see the need.&lt;/p&gt;


	&lt;p&gt;As for passing in the IHardwareLayer, what would you recommend instead? A factory of some kind? The one thing I would not do, of course, is make the game responsible for creating the hardware layer. There are many forms of Dependency Injection. I happened to pick using the constructor. In reality, having a configurable factory might make more sense. And when there&amp;#8217;s enough code to push that change into the system, I&amp;#8217;d consider it.&lt;/p&gt;


	&lt;p&gt;I do not understand how you are using the idea of a role. Role as in an employee has one to many roles? If so, how does anything in this solution suggest that? This looks closer to the bridge pattern to me (though it&amp;#8217;s not quite that).&lt;/p&gt;


	&lt;p&gt;The name comes from the original domain expert, GBGames. Until there&amp;#8217;s more tests, and the interface is somewhat more filled out, I&amp;#8217;m not sure what to call it. I do agree that it might be somewhat solution driving tests but I don&amp;#8217;t see that as a problem.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Jun 2009 10:21:29 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a6b0c3d4-c656-42f2-b8cf-692b2e7a86a8</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3501</link>
    </item>
    <item>
      <title>"TDDing an Interface - a Twitter influenced discussion" by Steve Freeman</title>
      <description>Some comments:
	&lt;ul&gt;
	&lt;li&gt;passing the layer into the Game constructor when it isn&amp;#8217;t held onto feels odd. Is there more to come?&lt;/li&gt;
		&lt;li&gt;IHardwareLayer isn&amp;#8217;t really a role, it describes an implementation structure. Is this, perhaps, a Display?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I know this sounds picky, but these are the sort of questions that we&amp;#8217;ve found forces our code into making sense.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Jun 2009 08:40:42 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f5615cd4-73f2-4f90-bfa0-c860116b80b0</guid>
      <link>http://blog.objectmentor.com/articles/2009/06/08/tdding-an-interface-a-twitter-influenced-discussion#comment-3500</link>
    </item>
  </channel>
</rss>

