Extreme Programming does not mean programming naked while rollerblading down the side of the Grand Canyon. It does mean a new approach to software development that is both radical and common-sense. Unlike many software development methodologies, XP has been accepted quickly because its core practices - particularly code sharing, test-first development, and continuous integration - resonated immediately with software developers everywhere. Instead of impressing developers with a body of theory, XP got programmers to say, "Yeah, that's how I'd like to work." Oddly enough, although most developers turn to Extreme Programming methods in order to code real, hands-on, and extensible projects quickly ("Code comes first"), most books on Extreme Programming insist on focusing on the theory and not the practice. Not the Java Extreme Programming Cookbook.
Brimming with over 100 "recipes" for getting down to business and actually doing XP, the Java Extreme Programming Cookbook doesn't try to "sell" you on XP; it succinctly documents the most important features of popular open source tools for XP in Java - including Ant, Junit, HttpUnit, Cactus, Tomcat, XDoclet - and then digs right in, providing recipes for implementing the tools in real-world environments. Each recipe offers solutions that help you put an extreme programming environment together: then provides code for automating the build process and testing. Although the time saved using any one of these solutions will more than pay for the book, Java Extreme Programming Cookbook offers more than just a collection of cut-and-paste code. Each recipe also includes explanations of how and why the approach works, so you can adapt the techniques to similar situation. One of the biggest challenges facing developers today is sorting through the wide variety of tools available form various source and figuring out how to them effectively. The recipes in Java Extreme Programming Cookbook showcase how to use the most important features of these XP tools.
Many of these tools are geared towards unit testing, while others are invaluable for continuous integration; with these practical examples, you'll be able to choose the most effective tools to accomplish your goals, then implement them in a cohesive development environment quickly.
Eric Burke is an O'Reilly author and a Principal Software Engineer with Object Computing, Inc. in St Louis, MO. He specializes in Java and his job duties include consulting, training and public speaking engagements. Brian M. Coyner is a Senior Software Engineer with Object Computing, Inc. in St Louis, MO. He has a B.S. in Computer Science from Southeast Missouri State University, and specializes in Java training and consulting. When he is not working, which is rare, Brian enjoys playing the guitar and spending time with his family.
1. XP Tools - Java and XP Tools and Philos ophies Open Source Toolkit 2. XP Overview What Is XP? Coding Unit Testing Refactoring Design Builds 3. Ant 3.1 Writing a Basic Buildfile 3.2 Running Ant 3.3 Providing Help 3.4 Using Environment Variables 3.5 Passing Arguments to a Buildfile 3.6 Checking for the Existence of Properties 3.7 Defining a Classpath 3 .8 Defining Platform-Independent Paths 3.9 Including and Excluding Files 3.10 Implementing Conditional Logic 3.11 Defining a Consistent Environment 3.12 Preventing Build Breaks 3.13 Building JAR Files 3.14 Installing JUnit 3.15 Running Unit Tests 3.16 Running Specific Tests 3.17 Generating a Test Report 3 .18 Checking Out Code from CVS 3.19 Bootstrapping a Build 4. JUnit 4.1 Getting Started 4.2 Running JUnit 4.3 assertXXX( ) Methods 4.4 Unit Test Granularity 4.5 Set Up and Tear Down 4.6 One-Time Set Up and Tear Down 4.7 Organizing Tests into Test Suites 4.8 Running a Te st Class Directly 4.9 Repeating Tests 4.10 Test Naming Conventions 4.11 Unit Test Organization 4.12 Exception Handling 4.13 Running Tests Concurrently 4.14 Testing Asynchronous Methods 4.15 Writing a Base Class for Your Tests 4.16 Testing Swing Code 4.17 Tes ting with the Robot 4.18 Testing Database Logic 4.19 Repeatedly Testing the Same Method 5. HttpUnit 5.1 Installing HttpUnit 5.2 Preparing for Test-First Development 5.3 Checking a Static Web Page 5.4 Following Hyperlinks 5.5 Writing Testable HTML 5.6 Testing HTM L Tables 5.7 Testing a Form Tag and Refactoring Your Tests 5.8 Testing for Elements on HTML Form s 5.9 Submitting Form Data 5.10 Testing Through a Firewall 5.11 Testing Cookies 5.12 Testing Secure Pages 6. Mock Objects 6.1 Event Listener Testing 6.2 Mock Object Self-Validation 6.3 Writing T estable JDBC Code 6.4 Testing JDBC Code 6.5 Generating Mock Objects with MockMaker 6.6 Breaking Up Methods to Avoid Mock Objects 6.7 Testing Server-Side Business Logic 7. Cactus 7.1 Configuring Cactus 7.2 Setting Up a Stable Build Environment 7.3 Creating the cactus.properties File 7.4 Generating the cactus.properties File Automatically 7.5 Writing a Cactus Test 7.6 Submitting Form Data 7.7 Testing Cookies 7.8 Testing Session Tracking Using HttpSession 7.9 Testing Servlet Initialization Parameters 7.10 Testing Servlet Filters 7.11 Securing Cactus Tests 7.12 Using Http Unit to Perform Complex Assertions 7.13 Testing the Output of a JSP 7.14 When Not to Use Cactus 7.15 Designing Testable JSPs 8. JUnitPerf 8.1 When to Use JUnitPerf 8.2 Creating a Timed Test 8.3 Creating a LoadTest 8.4 Creating a Timed Test for Varying Loads 8.5 Testing Individual Response Times Under Load 8.6 Running a TestSuite with Ant 8.7 Generating JUnitPerf Tests 9. XDoclet 9.1 Setting Up a Development Environment for Generated Files 9.2 Setting Up Ant to Run XDoclet 9.3 Regenerating Files That Have Changed 9.4 Generating the EJB Deployment Descriptor 9.5 Specifying Different EJB Specifications (Part Contents).