Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Modern C++ Programming with Test-Driven Development
Table of Contents
Early Praise for Modern C++ Programming with Test-Driven Development
Foreword
Introduction
But Can It Work for Me on My System?
Who This Book Is For
What You’ll Need
How to Use This Book
About “Us”
About Me
About the C++ Style in This Book
Acknowledgments
Dedication
Chapter 1: Global Setup
1.1 Setup
1.2 The Examples
1.3 C++ Compiler
1.4 CMake
1.5 Google Mock
1.6 CppUTest
1.7 libcurl
1.8 JsonCpp
1.9 rlog
1.10 Boost
1.11 Building Examples and Running Tests
1.12 Teardown
Chapter 2: Test-Driven Development: A First Example
2.1 Setup
2.2 The Soundex Class
2.3 Getting Started
2.4 Fixing Unclean Code
2.5 Incrementalism
2.6 Fixtures and Setup
2.7 Thinking and TDD
2.8 Test-Driving vs. Testing
2.9 What If?
2.10 One Thing at a Time
2.11 Limiting Length
2.12 Dropping Vowels
2.13 Doing What It Takes to Clarify Tests
2.14 Testing Outside the Box
2.15 Back on Track
2.16 Refactoring to Single-Responsibility Functions
2.17 Finishing Up
2.18 What Tests Are We Missing?
2.19 Our Solution
2.20 The Soundex Class
2.21 Teardown
Chapter 3: Test-Driven Development Foundations
3.1 Setup
3.2 Unit Test and TDD Fundamentals
3.3 The TDD Cycle: Red-Green-Refactor
3.4 The Three Rules of TDD
3.5 Getting Green on Red
3.6 Mind-Sets for Successful Adoption of TDD
3.7 Mechanics for Success
3.8 Teardown
Chapter 4: Test Construction
4.1 Setup
4.2 Organization
4.3 Fast Tests, Slow Tests, Filters, and Suites
4.4 Assertions
4.5 Inspecting Privates
4.6 Testing vs. Test-Driving: Parameterized Tests and Other Toys
4.7 Teardown
Chapter 5: Test Doubles
5.1 Setup
5.2 Dependency Challenges
5.3 Test Doubles
5.4 A Hand-Crafted Test Double
5.5 Improving Test Abstraction When Using Test Doubles
5.6 Using Mock Tools
5.7 Getting Test Doubles in Place
5.8 Design Will Change
5.9 Strategies for Using Test Doubles
5.10 Miscellaneous Test Double Topics
5.11 Teardown
Chapter 6: Incremental Design
6.1 Setup
6.2 Simple Design
6.3 Where Is the Up-Front Design?
6.4 Refactoring Inhibitors
6.5 Teardown
Chapter 7: Quality Tests
7.1 Setup
7.2 Tests Come FIRST
7.3 One Assert per Test
7.4 Test Abstraction
7.5 Teardown
Chapter 8: Legacy Challenges
8.1 Setup
8.2 Legacy Code
8.3 Themes
8.4 The Legacy Application
8.5 A Test-Driven Mentality
8.6 Safe Refactoring to Support Testing
8.7 Adding Tests to Characterize Existing Behavior
8.8 Sidetracked by the Reality of Legacy Code
8.9 Creating a Test Double for rlog
8.10 Test-Driving Changes
8.11 A New Story
8.12 A Brief Exploration in Seeking Faster Tests
8.13 Mondo Extracto
8.14 Spying to Sense Using a Member Variable
8.15 Spying to Sense Using a Mock
8.16 Alternate Injection Techniques
8.17 Large-Scale Change with the Mikado Method
8.18 An Overview of the Mikado Method
8.19 Moving a Method via Mikado
8.20 More Thoughts on the Mikado Method
8.21 Is It Worth It?
8.22 Teardown
Chapter 9: TDD and Threading
9.1 Setup
9.2 Core Concepts for Test-Driving Threads
9.3 The GeoServer
9.4 Performance Requirements
9.5 Designing an Asynchronous Solution
9.6 Still Simply Test-Driving
9.7 Ready for a Thready!
9.8 Exposing Concurrency Issues
9.9 Creating Client Threads in the Test
9.10 Creating Multiple Threads in the ThreadPool
9.11 Back to the GeoServer
9.12 Teardown
Chapter 10: Additional TDD Concepts and Discussions
10.1 Setup
10.2 TDD and Performance
10.3 Unit Tests, Integration Tests, and Acceptance Tests
10.4 The Transformation Priority Premise
10.5 Writing Assertions First
10.6 Teardown
Chapter 11: Growing and Sustaining TDD
11.1 Setup
11.2 Explaining TDD to Nontechies
11.3 The Bad Test Death Spiral, aka the SCUMmy Cycle
11.4 Pair Programming
11.5 Katas and Dojos
11.6 Using the Code Coverage Metric Effectively
11.7 Continuous Integration
11.8 Deriving Team Standards for TDD
11.9 Keeping Up with the Community
11.10 Teardown
Appendix 1: Comparing Unit Testing Tools
A1.1 Setup
A1.2 TDD Unit Testing Tool Features
A1.3 Notes on Google Mock
A1.4 Notes on CppUTest
A1.5 Other Unit Testing Frameworks
A1.6 Teardown
Appendix 2: Code Kata: Roman Numeral Converter
A2.1 Setup
A2.2 Let’s Go!
A2.3 Practice Makes Perfect
A2.4 Teardown
Appendix 3: Bibliography
You May Be Interested In…
← Prev
Back
Next →
← Prev
Back
Next →