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...

Descripción completa

Detalles Bibliográficos
Autor principal: Tanner, Abdul Wahid (-)
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.