Unit Testing in Java, 1st Edition

How Tests Drive the Code

Unit Testing in Java, 1st Edition,Johannes Link,ISBN9781558608689


Morgan Kaufmann




235 X 187

Introduces both the basic and advanced use of JUnit, a widely used Open Source framework for testing Java applications.

Print Book + eBook

USD 74.94
USD 124.90

Buy both together and save 40%

Print Book


In Stock

Estimated Delivery Time
USD 63.95

eBook Overview

VST (VitalSource Bookshelf) format

DRM-free included formats : EPUB, Mobi (for Kindle), PDF

USD 60.95
Add to Cart

Key Features

*Shows how the discovery and avoidance of software errors is a demanding and creative activity in its own right and can build confidence early in a project.
*Demonstrates how automated tests can detect the unwanted effects of small changes in code within the entire system.
*Discusses how testing works with persistency, concurrency, distribution, and web applications.
*Includes a discussion of testing with C++ and Smalltalk.


Software testing is indispensable and is one of the most discussed topics in software development today. Many companies address this issue by assigning a dedicated software testing phase towards the end of their development cycle. However, quality cannot be tested into a buggy application. Early and continuous unit testing has been shown to be crucial for high quality software and low defect rates. Yet current books on testing ignore the developer's point of view and give little guidance on how to bring the overwhelming amount of testing theory into practice. Unit Testing in Java represents a practical introduction to unit testing for software developers. It introduces the basic test-first approach and then discusses a large number of special issues and problem cases. The book instructs developers through each step and motivates them to explore further.


Software developers and Java programmers.

Johannes Link

For 4 years Johannes Link has been project manager and software developer at andrena objects ag in Karlsruhe, Germany. He came to andrena after years of practical software engineering research at the German Cancer Research Center and the German ABB Corporate Research Center. Johannes is responsible for andrena's internal and external training activities and has published articles on software testing and software development. He holds a diploma degree in medical computer science from Heidelberg University.

Affiliations and Expertise

andrena objects ag, Karlsruhe, Germany.

Unit Testing in Java, 1st Edition

Part 1: Basic Techniques
1 Introduction
1.1 Important Terms
1.2 XP Testing
1.3 Classic Testing
1.4 "Test-First Development" - A Brief Definition
1.5 Java Only - Or Other Coffee?
1.6 Objectives of This Book
1.7 Organization of This Book
1.8 Conventions in This Book
1.9 Web Site to This Book

2 Automating Unit Tests
2.1 What Do We Want to Automate?
2.2 Requirements to an Automation Framework
2.3 Junit
2.4 Summary

3 Basic Steps of the Test-first Approach
3.1 Step by Step
3.2 Dependencies
3.3 Organizing and Running Tests
3.4 Summary

4 Test Ideas and Heuristics
4.1 Reworking Single Tests
4.2 Black and White Boxes
4.3 Testing the Typical Functionality
4.4 Threshold Values and Equivalence Classes
4.5 Error Cases and Exceptions
4.6 Object Interactions
4.7 Design by Contract
4.8 More Ideas to Find Test Cases
4.9 Refactoring Code and Tests
4.10 Summary

5 The Inner Life of a Test Framework
5.1 Statics
5.2 The Life Cycle of a Test Suite
5.3 Project-specific Expansions
5.4 Summary

6 Dummy and Mock Objects for Independence
6.1 Little Dummies
6.2 Weltering in Technical Terms
6.3 Big Dummies
6.4 Extending our Mansion
6.5 Endoscopic Testing
6.6 Mock Objects from the Assembly Line
6.7 Testing Threshold Values and Exceptions
6.8 How Does the Test Get to the Mock?
6.9 Evil Singletons
6.10 Lightweight and Heavyweight Mocks
6.11 File Dummies
6.12 More Typical Mock Objects
6.13 External Components
6.14 The Pros and Cons
6.15 Summary

7 Inheritance and Polymorphism
7.1 Inheritance
7.2 Polymorphism
7.3 Summary

8. How Much is Enough?
8.1 The XP Rule
8.2 Clear Answers to Clear Questions
8.3 Test Coverage
8.4 Summary

Part II: Advanced Topics
9 Persistent Objects
9.1 Abstract Persistence Interface
9.2 Persistent Dummy
9.3 Designing a Database Interface
9.4 Testing the "Right" Persistence
9.5 Interaction Between Persistence Layer and Client
9.6 Summary

10 Concurrent Programs
10.1 Problems Using Threads
10.2 Testing Asynchronous Services
10.3 Testing for Synchronization
10.4 Summary

11 Distributed Applications
11.1 RMI
11.2 Enterprise JavaBeans
11.3 Summary

12 Web Applications
12.1 Functional Tests
12.2 Testing on the Server
12.3 Testing with Dummies
12.4 Separating the Servlet API from the Servlet Logic
12.5 Testing the HTML Generation
12.6 Summary

13 Graphical User Interfaces
13.1 The Direct Way
13.2 Short Detours
13.3 Summary

14 The Role of Unit Tests in the Software Process
14.1 Activities in the Defined Software Process
14.2 Process Types and Testing Strategies
14.3 Costs and Benefits of Automated Unit Tests
14.4 Commercial Process Models
14.5 Will Automated Unit Tests Fit in My Process?

15 Loose Ends and Opportunities
15.1 Unit Testing for Existing Software
15.2 Introducing Unit Tests to the Development Team
15.3 What's Missing

Part III: Appendix
A. Notes to JUnit
B. Unit Tests with Other Programming Languages
C. Glossary
D. Bibliography & References

Quotes and reviews

I haven't found a high quality book like this on JUnit. Unit Testing in Java does for unit testing what Alan Cooper's About Face did for usability: it makes unit testing mainstream among developers.—Frank Cohen, Push to Test
Free Shipping
Shop with Confidence

Free Shipping around the world
▪ Broad range of products
▪ 30 days return policy

Contact Us