Test Driven Development (TDD), and Refactoring Legacy Code Using C#
Click here for information regarding remote access training.
Students Will Learn:
- Agile development and the test-driven development paradigm
- Creating tests from use cases and/or Agile methodology
- Unit testing using NUnit and Visual Studio
- Testing code that interacts with databases
- Using mocks, fakes, and stubs
- Automating tests, builds and check-ins using a continuous integration server
- Refactoring existing code to improve clarity, readability and maintainability
- Identifying patterns useful in TDD including the SOLID principles
- Identifying and eliminating dependencies that make code difficult to maintain and extend
- Tracking code coverage and analyzing other code metrics to improve code maintainability
- Using the seam model to identify appropriate places in the code to make changes safely
- Identifying and correcting various types of code smells
- Using effect sketches and pinch points to identify optimal places for tests
- Using feature sketches to identify opportunistic refactoring
Course Description: This course provides students with hands on experience learning Test Driven Development (TDD) using NUnit and Microsoft’s Visual Studio. Students will build unit tests using mocks, fakes, stubs and drivers, and address issues working with databases and other systems. Student will create tests and code that will be more likely to meet and exceed requirements. Code that receives “test coverage” will not break existing systems, because tests are passed before code is checked in.
Students will spend time working with the issues involved in refactoring legacy code, safely cutting into an already deployed system. Students will work on looking for, or creating “seams” to more safely improve code or add features, and work on identifying “code smells” that need attention in a productive system.
Finally, students will explore dependency issues as well as techniques to better understand and improve complex systems.
Students will also examine TDD and refactoring legacy code in other languages like Java to gain a broader view of options and issues working in a multi-language shop. Comprehensive labs using C# provide facilitated hands on practice crucial to developing competence and confidence with the new skills being learned
Course Prerequisites: C# programming experience and an understanding of object-oriented design principles. HOTT's Learning to Program with C# course or equivalent knowledge provides a solid foundation.
Test Driven Development (TDD), and Refactoring Legacy Code Using C# Course Overview:
|Why TDD? Think Twice, Write
Production Code Once
||Basic Unit Testing
|Comprehensive Unit Testing Concepts
||Mocks, Fakes, Stubs and Drivers
|Database Unit Testing
|Patterns and Anti-Patterns in TDD
||Refactoring Legacy Code
||System, Regression and Acceptance Testing
|Continuous Integration Servers/Automated Testing
"The class was very well done. It was fast-paced and covered a lot of material. It kept me engaged. The instructor was excellent. I would definitely recommend HOTT for future courses."
S.E., Lambton College