Test-Driven Development with C++ A Simple Guide to Writing Bug-Free Agile Code
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 tes...
Autor principal: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
Birmingham :
Packt Publishing, Limited
2022.
|
Edición: | 1st ed |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009703316106719 |
Tabla de Contenidos:
- 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.