<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	>
<channel>
	<title>Comments on: How Do You Start TDD?</title>
	<atom:link href="http://www.symphonious.net/2006/08/27/how-do-you-start-tdd/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.symphonious.net/2006/08/27/how-do-you-start-tdd/</link>
	<description>Living in a state of accord.</description>
	<pubDate>Sat, 10 Jan 2009 00:06:01 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Steve Loughran</title>
		<link>http://www.symphonious.net/2006/08/27/how-do-you-start-tdd/comment-page-1/#comment-30169</link>
		<dc:creator>Steve Loughran</dc:creator>
		<pubDate>Sun, 27 Aug 2006 16:56:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/27/how-do-you-start-tdd/#comment-30169</guid>
		<description>If you develop bottom up, start at the bottom:

1. start on the libraries; write tests for new libs that you add.

2. write tests to check your understanding of new APIs; if you are learning jdbc, tcp, whatever, write tests to check your assumptions. These turn out to be handy regressions in future.

3. For web-based apps, jump to HttpUnit for functional testing of the app. 

4. Swing? There is a swing junit extension, but all such guis are hard to test. Its a side effect of system integration and the complexity of the app. How do you test that drag and drop and resize works? On every single platform? That's why web based apps are so appealing -you only need to test in a limited set of browsers and you are done.

The other thing to remember is this: a good test breaks the app. There's little point wasting the time writing a test if you provide sample data you know will work. That's not a test, its a demo, and while useful (you need at least one correct path to test), most tests should be designed to break the app.</description>
		<content:encoded><![CDATA[<p>If you develop bottom up, start at the bottom:</p>
<p>1. start on the libraries; write tests for new libs that you add.</p>
<p>2. write tests to check your understanding of new APIs; if you are learning jdbc, tcp, whatever, write tests to check your assumptions. These turn out to be handy regressions in future.</p>
<p>3. For web-based apps, jump to HttpUnit for functional testing of the app. </p>
<p>4. Swing? There is a swing junit extension, but all such guis are hard to test. Its a side effect of system integration and the complexity of the app. How do you test that drag and drop and resize works? On every single platform? That&#8217;s why web based apps are so appealing -you only need to test in a limited set of browsers and you are done.</p>
<p>The other thing to remember is this: a good test breaks the app. There&#8217;s little point wasting the time writing a test if you provide sample data you know will work. That&#8217;s not a test, its a demo, and while useful (you need at least one correct path to test), most tests should be designed to break the app.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George Dinwiddie</title>
		<link>http://www.symphonious.net/2006/08/27/how-do-you-start-tdd/comment-page-1/#comment-30124</link>
		<dc:creator>George Dinwiddie</dc:creator>
		<pubDate>Sun, 27 Aug 2006 04:10:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.symphonious.net/2006/08/27/how-do-you-start-tdd/#comment-30124</guid>
		<description>My advice is *not* to start with a test for main(), or swing, or struts, or rails, or whatever.  Start with what you want your app to *do*.  The framework, whether console-based or GUI, can be added onto that, later.  (And can be mostly test driven, though many people skip that.)  Think about the primary function of the application, and write a test for a rediculously simple case.  Use this to drive an the creation of a top-level business class which just fakes the expected return.  As you add tests, use them to drive the creation of the end-to-end system, faking the return of new collaborators, if needed.  You can then add tests for those collaborators to flesh out their requirements.  Once you get started, it gets easier, even if you started in the wrong direction and need to rip out some of your early work.</description>
		<content:encoded><![CDATA[<p>My advice is *not* to start with a test for main(), or swing, or struts, or rails, or whatever.  Start with what you want your app to *do*.  The framework, whether console-based or GUI, can be added onto that, later.  (And can be mostly test driven, though many people skip that.)  Think about the primary function of the application, and write a test for a rediculously simple case.  Use this to drive an the creation of a top-level business class which just fakes the expected return.  As you add tests, use them to drive the creation of the end-to-end system, faking the return of new collaborators, if needed.  You can then add tests for those collaborators to flesh out their requirements.  Once you get started, it gets easier, even if you started in the wrong direction and need to rip out some of your early work.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
