Shows how Java and TDD integrate throughout the entire development lifecycle, helping you leverage efficient development techniques. This work also shows how to translate oral requirements into practical tests, and then how to use those tests to create reliable, high-performance Java code that solve
Test-Driven Development with C++: A simple guide to writing bug-free Agile code
โ Scribed by Abdul Wahid Tanner
- Publisher
- Packt Publishing
- Year
- 2022
- Tongue
- English
- Leaves
- 430
- Edition
- 1
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Synopsis
Learn how to write a simple testing framework and extend it to drive the design of your logging library
Key Features
- Learn how to solve various challenges when testing in C++ with the help of effective solutions
- Develop a logging library with enhancements
- Drive better code designs with effective tests
Book Description
Modern, standard C++ is all that is needed to create a small and practical testing framework that will improve the design of any project. This allows you to think about how the code will be used, which is the first step in designing intuitive interfaces. TDD is a modern balanced software development approach that helps to create maintainable applications, provide modularity in design, and write minimal code that drastically reduces defects. With the help of this book, you'll be able to continue adding value when designs need to change by ensuring that the changes don't break existing tests.
In this book, developers working with test-driven development (TDD) will be able to put their knowledge to work by writing a simple testing framework and then using it to drive the design of a logging library. The book will help you enhance your software development skills with test cases. You'll understand how to design and implement test cases. The chapters will also show you how to utilize the TDD approach to be more productive in software development than attempting to code in large unstructured steps.
By the end of this book, you'll have gained knowledge of TDD and testing and also built a working logging library.
What you will learn
- Understand how to develop software using TDD
- Keep the code for the system as error-free as possible
- Refactor and redesign code confidently
- Communicate the requirements and behaviors of the code with your team
- Understand the differences between unit tests and integration tests
- Use TDD to create a minimal viable testing framework
Who this book is for
This book is for C++ developers already familiar with and using C++ for daily tasks who want to improve their skillset. You don't need to be an expert but you should already have some knowledge of modern C++ and how to use templates to get the most out of this book.
Table of Contents
- Desired Test Declaration
- Test Results
- The TDD process
- Adding Tests to a Project
- Adding More Confirm Types
- Explore Improvements Early
- Test Setup and Teardown
- What Makes a Good Test?
- Using Tests
- The TDD Process In Depth
- Managing Dependencies
- Creating Better Test Confirmations
- How to Test Floating-Point and Custom Values
- How to Test Services
- How to Test With Multiple Threads
โฆ Table of Contents
Cover
Title Page
Copyright and Credits
Contributors
About the reviewer
Table of Contents
Preface
Part 1: Testing MVP
Chapter 1: Desired Test Declaration
Technical requirements
What do we want tests to do for us?
What should a test look like?
What information does a test need?
How can we use C++ to write tests?
How will the first test be used?
Summary
Chapter 2: Test Results
Technical requirements
Reporting a single test result
Enhancing the test declaration to support multiple tests
Summarizing the results
Redirecting the output results
Summary
Chapter 3: The TDD Process
Technical requirements
Build failures come first
Do only what is needed to pass
Enhancing a test and getting another pass
Summary
Chapter 4: Adding Tests to a Project
Technical requirements
How to detect whether a test passes or fails
Enhancing the testing library to support assertions
Should error cases be tested, too?
Summary
Chapter 5: Adding More Confirm Types
Technical requirements
Fixing the bool confirms
Confirming equality
Decoupling test failures from line numbers
Adding more confirm types
Confirming string literals
Confirming floating point values
How to write confirms
Summary
Chapter 6: Explore Improvements Early
Technical requirements
Getting line numbers without macros
Exploring lambdas for tests
Summary
Chapter 7: Test Setup and Teardown
Technical requirements
Supporting test setup and teardown
Enhancing test setup and teardown for multiple tests
Handling errors in setup and teardown
Summary
Chapter 8: What Makes a Good Test?
Technical requirements
Making tests easy to understand
Keeping tests focused on specific scenarios
Use random behavior only in this way
Only test your project
Test what should happen instead of how
Summary
Part 2: Using TDD to Create a Logging Library
Chapter 9: Using Tests
Technical requirements
Why build a logging library?
How will TDD help build a logging library?
What would the ideal logging library look like?
Starting a project using TDD
Logging and confirming the first message
Adding timestamps
Constructing log messages with streams
Summary
Chapter 10: The TDD Process in Depth
Technical requirements
Finding gaps in the testing
Adding log levels
Adding default tag values
Exploring filtering options
Adding new tag types
Refactoring the tag design with TDD
Designing tests to filter log messages
Controlling what gets logged
Enhancing filtering for relative matches
When is testing too much?
How intrusive should tests be?
Where do integration or system tests go in TDD?
What about other types of tests?
Summary
Chapter 11: Managing Dependencies
Technical requirements
Designing with dependencies
Adding multiple logging outputs
Summary
Part 3: Extending the TDD Library to Support the Growing Needs of the Logging Library
Chapter 12: Creating Better Test Confirmations
Technical requirements
The problem with the current confirmations
Simplifying string confirmations
Enhancing the test library to support Hamcrest matchers
Adding more Hamcrest types
Summary
Chapter 13: How to Test Floating-Point and Custom Values
Technical requirements
More precise floating-point comparisons
Adding floating-point Hamcrest matchers
Writing custom Hamcrest matchers
Summary
Chapter 14: How to Test Services
Technical requirements
Service testing challenges
What can be tested in a service?
Introducing the SimpleService project
Summary
Chapter 15: How to Test With Multiple Threads
Technical requirements
Using multiple threads in tests
Making the logging library thread-safe
The need to justify multiple threads
Changing the service return type
Making multiple service calls
How to test multiple threads without sleep
Fixing one last problem detected with logging
Summary
Index
Other Books You May Enjoy
โฆ Subjects
Test-Driven Development; TDD; C++; Stubs; Mocks; Multi-Threading Testing; Multiple Threads Testing
๐ SIMILAR VOLUMES
Master Java 5.0, object-oriented design, and Test-Driven Development (TDD) by learning them together. Agile Java weaves all three into a single coherent approach to building professional, robust software systems. Jeff Langr shows exactly how Java and TDD integrate throughout the entire development l
<div><p>Your code is a testament to your skills as a developer. No matter what language you use, your code should be clean, elegant, and uncluttered? With test-driven development (TDD), you'll write better code--code that's easy to understand, retains its elegance, and works for years to come.</p><p
<div><p>Your code is a testament to your skills as a developer. No matter what language you use, code should be clean, elegant, and uncluttered. By using test-driven development (TDD), you'll write code that's easy to understand, retains its elegance, and works for months, even years, to come. With
<span><div><p>Your code is a testament to your skills as a developer. No matter what language you use, code should be clean, elegant, and uncluttered. By using test-driven development (TDD), you'll write code that's easy to understand, retains its elegance, and works for months, even years, to come.
Your code is a testament to your skills as a developer. No matter what language you use, code should be clean, elegant, and uncluttered. By using test-driven development (TDD), you'll write code that's easy to understand, retains its elegance, and works for months, even years, to come. With this ind