Comments
Richard Davies wrote: The UK has a good crop of technology pioneers in cloud computing - for example ElasticHosts, FlexiScale, Flexiant, OnApp - and also some strong government initiatives such as G-Cloud. We will have to see whether this kind of technical leadership converts into swift mass-market adoption or not.
Cloud Expo on Google News

SYS-CON.TV
Cloud Expo & Virtualization 2009 East
PLATINUM SPONSORS:
IBM
Smarter Business Solutions Through Dynamic Infrastructure
IBM
Smarter Insights: How the CIO Becomes a Hero Again
Microsoft
Windows Azure
GOLD SPONSORS:
Appsense
Why VDI?
CA
Maximizing the Business Value of Virtualization in Enterprise and Cloud Computing Environments
ExactTarget
Messaging in the Cloud - Email, SMS and Voice
Freedom OSS
Stairway to the Cloud
Sun
Sun's Incubation Platform: Helping Startups Serve the Enterprise
POWER PANELS:
Cloud Computing & Enterprise IT: Cost & Operational Benefits
How and Why is a Flexible IT Infrastructure the Key To the Future?
Click For 2008 West
Event Webcasts
Catching the Test Bug
If you don't already use JUnit, you should

The software industry is often obsessed with progress be it in the form of a new language, wire protocol, specification update, or some other technology-driven feature. For me, software is a means to an end, and progress should be measured in features that allow code to be written more efficiently, with fewer errors, and with an increased fitness of purpose. To this end, the single thing that has most changed the way I view and approach Java is the JUnit framework.

I first came across JUnit working on a project where I was designing an API specification for a developer eight time zones away. Rather than having documents flying back and forth, he convinced me that I should write JUnit tests for the API. None of them worked. In fact to begin with none of them even compiled cleanly because the code didn't exist; however, the concept worked perfectly. The contract between the specification for what the code would do and all the assertions for how it should behave were all defined in a single place that was alive and coupled to the code. Whenever anyone new came along and wanted to know how the class library was supposed to work, we just said "check out the JUnits." No need to have spec-ware documents that would get out of step and become inevitably dated. With the unit tests representing the specification for how the code should work as part of the same code repository as the program source, the two could be refactored together, and in a short time I became totally hooked.

On a subsequent project we created a rule - before any developer checked code into the repository, he had to run all of the JUnit tests in the workspace. Initially people squealed and complained about lack of productivity and so forth; however, it proved to be a cornerstone of the project's eventual success. I remember one bleak day when some code I'd changed had, unbeknownst to me, broken another part of the system. The developer of the piece I'd broken was furious, not at me (although he was a little peeved), but more at himself for not having written a unit test that would have shown the breakage. His view is that unit tests are an insurance policy that a piece of code you write does what it says it is going to (using assert statements and other JUnit test constructs), but more important that by making your test part of the larger test suite, each time a developer makes a change, she can see the breakage and either fix the code, or fix the test if it's no longer applicable. Another thing we adopted on the project is that whenever a defect was raised, the first task was to write a failing test. This could take the better part of a day, sometimes longer, even if the fix was only a 10-minute hack. The benefit however is that once the failing test goes from red to green and both code and test alike are committed to the repository, there should be no way the problem can re-occur. The more tests we had in our suite, the better our insurance coverage.

For any project I work on now the tests form part of the build process. It's not enough to have a clean compile; you have to have a clean run of all of the tests for a build to be blessed as "complete" from development and taken to the next stage of the production process. This makes the functional testers happy as what they're getting is higher quality, allowing them to spend more time looking for integration or usability problems. It also lowers the entry bar for new developers as the project now has an insurance policy against sloppy regression in the form of an integral suite of unit tests.

I now view JUnit as an integral part of the Java development process, as important as compilation; one picks up syntactic compilation errors and the other safeguards runtime behavior. If you don't already use JUnit, you should, and then you too can catch the test bug.

About Joe Winchester
Joe Winchester, Editor-in-Chief of Java Developer's Journal, was formerly JDJ's longtime Desktop Technologies Editor and is a software developer working on development tools for IBM in Hursley, UK.

In order to post a comment you need to be registered and logged in.

Register | Sign-in

Reader Feedback: Page 1 of 1

Latest Cloud Developer Stories
Swisscom, the Swiss telecom, is going into the cloud business. Its subsidiary Swisscom IT Services AG has signed up with Red Hat as a Certified Cloud Provider and launched a public cloud Infrastructure-as-a-Service (IaaS) cloud targeting enterprise-class customers primarily in ...
Apache Deltacloud, the Red Hat-contributed ReSTful API that abstracts differences between clouds so services on any cloud can be managed – provided of course there’s a driver – has graduated from the Apache Foundation’s incubator and is now a full-fledged Top-Level Project (TLP)....
In a surprise move on Tuesday, January 10, Oracle wheeled out its Big Data Appliance. That’s the one it said in October would be ready sometime in the first half. Only nobody believed it meant early in the first half. Heck, it’s not even clear anybody thought Oracle could make ...
Rackspace Hosting, the service leader in cloud computing, on Thursday announced its acquisition of SharePoint911, an industry leader in SharePoint consulting, training, and "JumpStart" services within SharePoint. The unification of both companies provides capabilities to deliver ...
CloudLinux, Inc., on Thursday released CafeFS 3, a virtualized file system for shared hosters that cages each customer within its own virtualized file system. CageFS becomes part of CloudLinux OS at no additional charge. CloudLinux OS, the only commercially-supported Linux OS m...
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021

SYS-CON Featured Whitepapers
ADS BY GOOGLE

Breaking Cloud Computing News

Catch up on your sleep while you can. The Professional Association for SQL Server (...