Ulteriori informazioni
Foreword xiii Preface xv Acknowledgments xxi About the Authors xxiii Chapter 1: Getting Started 1Beyond JUnit 3 3 JUnit 4 7 Designing for Testability 8 TestNG 17 Conclusion 21Chapter 2: Testing Design Patterns 23Testing for Failures 23 Factories 34 Data-Driven Testing 39 Asynchronous Testing 67 Testing Multithreaded Code 71 Performance Testing 83 Mocks and Stubs 90 Dependent Testing 103 Inheritance and Annotation Scopes 113 Test Groups 119 Code Coverage 132 Conclusion 150Chapter 3: Enterprise Testing 153A Typical Enterprise Scenario 154 A Concrete Example 157 Test Implementation 160 Exploring the Competing Consumers Pattern 182 The Role of Refactoring 186 Conclusion 194Chapter 4: Java EE Testing 197In-Container versus Out-of-Container Testing 198 In-Container Testing 200 Java Naming and Directory Interface (JNDI) 207 Java Database Connectivity (JDBC) 210 Java Transaction API (JTA) 215 Java Messaging Service (JMS) 219 Java Persistence API (JPA) 225 Enterprise Java Beans 3.0 (EJB3) 236 Java API for XML Web Services (JAX-WS) 246 Servlets 255 XML 262 Conclusion 266Chapter 5: Integration 269Guice 280 DbUnit 295 HtmlUnit 303 Selenium 310 Swing UI Testing 312 Tests for Painting Code 316 Continuous Integration 320 Conclusion 322Chapter 6: Extending TestNG 325The TestNG API 325 BeanShell 335 Method Selectors 341 Annotation Transformers 346 Reports 355 Writing Custom Annotations 366 Conclusion 375Chapter 7: Digressions 377Motivation 377 The TestNG Philosophy 378 The Care and Feeding of Exceptionsv378 Stateful Tests 382 The Pitfalls of Test-Driven Development 385 Testing Private Methods 388 Testing versus Encapsulation 391 The Power of Debuggers 392 Logging Best Practices 394vThe Value of Time 397 Conclusion 399Appendix A: IDE Integration &...