Saturday, September 25, 2010

JUnit in Action












contents
preface xiii
acknowledgments xv
about this book xvii
about the authors xxi
about the title xxii
about the cover illustration xxiii
PART 1 JUNIT DISTILLED 1
1 JUnit jumpstart 3
1.1 Proving it works 4
1.2 Starting from scratch 6
1.3 Understanding unit testing frameworks 10
1.4 Setting up JUnit 11
1.5 Testing with JUnit 13
1.6 Summary 16
2 Exploring JUnit 17
2.1 Exploring core JUnit 18
2.2 Launching tests with test runners 20
Selecting a test runner 20 Defining your own test runner 21
2.3 Composing tests with TestSuite 21
Running the automatic suite 22 Rolling your own test suite 23
2.4 Collecting parameters with TestResult 25
2.5 Observing results with TestListener 27
2.6 Working with TestCase 28
Managing resources with a fixture 29
Creating unit test methods 30
2.7 Stepping through TestCalculator 32
Creating a TestSuite 33 Creating a TestResult 35
Executing the test methods 36
Reviewing the full JUnit life cycle 37
2.8 Summary 38
3 Sampling JUnit 39
3.1 Introducing the controller component 40
Designing the interfaces 41 Implementing the base classes 43
3.2 Let’s test it! 45
Testing the DefaultController 46 Adding a handler 46
Processing a request 50 Improving testProcessRequest 54
3.3 Testing exception-handling 55
Simulating exceptional conditions 56
Testing for exceptions 60
3.4 Setting up a project for testing 62
3.5 Summary 64
4 Examining software tests 65
4.1 The need for unit tests 66
Allowing greater test coverage 67 Enabling teamwork 67
Preventing regression and limiting debugging 67 Enabling
refactoring 68 Improving implementation design 69
Serving as developer documentation 69 Having fun 70
4.2 Different kinds of tests 71
The four flavors of software tests 71
The three flavors of unit tests 75
4.3 Determining how good tests are 77
Measuring test coverage 78 Generating test coverage reports 79
Testing interactions 81
4.4 Test-Driven Development 81
Tweaking the cycle 81 The TDD two-step 83
4.5 Testing in the development cycle 84
4.6 Summary 87
5 Automating JUnit 88
5.1 A day in the life 89
5.2 Running tests from Ant 90
Ant, indispensable Ant 91 Ant targets, projects, properties, and
tasks 92 The javac task 94 The JUnit task 96 Putting
Ant to the task 97 Pretty printing with JUnitReport 98
Automatically finding the tests to run 100
5.3 Running tests from Maven 102
Maven the goal-seeker 102 Configuring Maven for a
project 104 Executing JUnit tests with Maven 109
Handling dependent jars with Maven 109
5.4 Running tests from Eclipse 112
Creating an Eclipse project 112
Running JUnit tests in Eclipse 114
5.5 Summary 116
PART 2 TESTING STRATEGIES .................................... 117
6 Coarse-grained testing with stubs 119
6.1 Introducing stubs 120
6.2 Practicing on an HTTP connection sample 121
Choosing a stubbing solution 124
Using Jetty as an embedded server 125
6.3 Stubbing the web server’s resources 126
Setting up the first stub test 126 Testing for failure
conditions 132 Reviewing the first stub test 133
6.4 Stubbing the connection 134
Producing a custom URL protocol handler 134 Creating a JDK
HttpURLConnection stub 136 Running the test 137
6.5 Summary 138
7 Testing in isolation with mock objects 139
7.1 Introducing mock objects 140
7.2 Mock tasting: a simple example 141
7.3 Using mock objects as a refactoring technique 146
Easy refactoring 147 Allowing more flexible code 148
7.4 Practicing on an HTTP connection sample 150
Defining the mock object 150 Testing a sample method 151
Try #1: easy method refactoring technique 152
Try #2: refactoring by using a class factory 155
7.5 Using mocks as Trojan horses 159
7.6 Deciding when to use mock objects 163
7.7 Summary 164
8 In-container testing with Cactus 165
8.1 The problem with unit-testing components 166
8.2 Testing components using mock objects 167
Testing the servlet sample using EasyMock 168
Pros and cons of using mock objects to test components 170
8.3 What are integration unit tests? 172
8.4 Introducing Cactus 173
8.5 Testing components using Cactus 173
Running Cactus tests 174 Executing the tests using Cactus/Jetty
integration 174 Drawbacks of in-container testing 178
8.6 How Cactus works 179
Executing client-side and server-side steps 180
Stepping through a test 180
8.7 Summary 182
PART 3 TESTING COMPONENTS................................. 185
9 Unit-testing servlets and filters 187
9.1 Presenting the Administration application 188
9.2 Writing servlet tests with Cactus 189
Designing the first test 190 Using Maven to run Cactus
tests 192 Finishing the Cactus servlet tests 198
9.3 Testing servlets with mock objects 204
Writing a test using DynaMocks and DynaBeans 205
Finishing the DynaMock tests 206
9.4 Writing filter tests with Cactus 208
Testing the filter with a SELECT query 209
Testing the filter for other query types 210
Running the Cactus filter tests with Maven 212
9.5 When to use Cactus, and when to use mock objects 213
9.6 Summary 214
10 Unit-testing JSPs and taglibs 215
10.1 Revisiting the Administration application 216
10.2 What is JSP unit testing? 217
10.3 Unit-testing a JSP in isolation with Cactus 217
Executing a JSP with SQL results data 218 Writing the Cactus
test 219 Executing Cactus JSP tests with Maven 222
10.4 Unit-testing taglibs with Cactus 224
Defining a custom tag 225 Testing the custom tag 227
Unit-testing tags with a body 228
Unit-testing collaboration tags 233
10.5 Unit-testing taglibs with mock objects 233
Introducing MockMaker and installing its Eclipse plugin 234
Using MockMaker to generate mocks from classes 234
10.6 When to use mock objects and when to use Cactus 237
10.7 Summary 237
11 Unit-testing database applications 239
11.1 Introduction to unit-testing databases 240
11.2 Testing business logic in isolation from the database 242
Implementing a database access layer interface 243 Setting up a
mock database interface layer 244
Mocking the database interface layer 246
11.3 Testing persistence code in isolation
from the database 247
Testing the execute method 248 Using expectations to verify
state 256
11.4 Writing database integration unit tests 260
Filling the requirements for database integration tests 260
Presetting database data 261
11.5 Running the Cactus test using Ant 265
Reviewing the project structure 265 Introducing the Cactus/Ant
integration module 266 Creating the Ant build file step by
step 267 Executing the Cactus tests 274
11.6 Tuning for build performance 275
Factoring out read-only data 275 Grouping tests in functional
test suites 277 Using an in-memory database 278
11.7 Overall database unit-testing strategy 278
Choosing an approach 278
Applying continuous integration 279
11.8 Summary 280
12 Unit-testing EJBs 281
12.1 Defining a sample EJB application 282
12.2 Using a façade strategy 283
12.3 Unit-testing JNDI code using mock objects 284
12.4 Unit-testing session beans 285
Using the factory method strategy 289
Using the factory class strategy 293
Using the mock JNDI implementation strategy 297
12.5 Using mock objects to test message-driven beans 307
12.6 Using mock objects to test entity beans 310
12.7 Choosing the right mock-objects strategy 312
12.8 Using integration unit tests 313
12.9 Using JUnit and remote calls 314
Requirements for using JUnit directly 315 Packaging the Petstore
application in an ear file 315 Performing automatic deployment
and execution of tests 319 Writing a remote JUnit test for
PetstoreEJB 325 Fixing JNDI names 326
Running the tests 327
12.10 Using Cactus 328
Writing an EJB unit test with Cactus 328 Project directory
structure 329 Packaging the Cactus tests 329
Executing the Cactus tests 333
12.11 Summary 334
A The source code 335
A.1 Getting the source code 336
A.2 Source code overview 336
A.3 External libraries 338
A.4 Jar versions 339
A.5 Directory structure conventions 340
B Eclipse quick start 341
B.1 Installing Eclipse 342
B.2 Setting up Eclipse projects from the sources 342
B.3 Running JUnit tests from Eclipse 343
B.4 Running Ant scripts from Eclipse 344
B.5 Running Cactus tests from Eclipse 345
references 346
index 351

Download
Another Java Books

No comments:

Post a Comment

Related Posts with Thumbnails

Put Your Ads Here!