Test Driven Development for Embedded C
- Length: 310 pages
- Edition: 1
- Language: English
- Publisher: Pragmatic Bookshelf
- Publication Date: 2011-05-02
- ISBN-10: 193435662X
- ISBN-13: 9781934356623
- Sales Rank: #83273 (See Top 100 Books)
TDD is a modern programming practice C developers need to know. It’s a different way to program—unit tests are written in a tight feedback loop with the production code, assuring your code does what you think. You get valuable feedback every few minutes. You find mistakes before they become bugs. You get early warning of design problems. You get immediate notification of side effect defects. You get to spend more time adding valuable features to your product.
James is one of the few experts in applying TDD to embedded C. With his 1.5 decades of training, coaching, and practicing TDD in C, C++, Java, and C# he will lead you from being a novice in TDD to using the techniques that few have mastered.
This book is full of code written for embedded C programmers. You don’t just see the end product, you see code and tests evolve. James leads you through the thought process and decisions made each step of the way. You’ll learn techniques for test-driving code right next to the hardware, and you’ll learn design principles and how to apply them to C to keep your code clean and flexible.
To run the examples in this book, you will need a C/C++ development environment on your machine, and the GNU GCC tool chain or Microsoft Visual Studio for C++ (some project conversion may be needed).
Table of Contents
Chapter 1 Test-Driven Development
part 1 Getting Started
Chapter 2 Test-Driving Tools and Conventions
Chapter 3 Starting a C Module
Chapter 4 Testing Your Way to Done
Chapter 5 Embedded TDD Strategy
Chapter 6 Yeah, but…
part 2 Testing Modules with Collaborators
Chapter 7 Introducing Test Doubles
Chapter 8 Spying on the Production Code
Chapter 9 Runtime-Bound Test Doubles
Chapter 10 The Mock Object
part 3 Design and Continuous Improvement
Chapter 11 SOLID, Flexible, and Testable Designs
Chapter 12 Refactoring
Chapter 13 Adding Tests to Legacy Code
Chapter 14 Test Patterns and Antipatterns
Chapter 15 Closing Thoughts
part 4 Appendixes
Appendix.A Development System Test Environment
Appendix.B Unity Quick Reference
Appendix.C CppUTest Quick Reference
Appendix.D LedDriver After Getting Started
Appendix.E Example OS Isolation Layer
Appendix.F Bibliography