Test Driven Development (TDD), and Refactoring Legacy Code Using Java
Students Will Learn:
- Unit Testing Using JUnit
- Regression and Acceptance Testing
- Mocks, Fakes, and Stubs
- Database Issues in TDD
- Continuous Integration Servers
- Automated Testing
- Production Code Risks
- Addressing “Code Smells”
- Dependency Issues
- Using Seams to Improve Legacy Code
Course Description: This course provides students with hands on experience learning Test Driven Development (TDD) using JUnit. 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 C# to gain a broader view of options and issues working in a multi-language shop. Comprehensive labs using Java provide facilitated hands on practice crucial to developing competence and confidence with the new skills being learned.
Course Prerequisites: Java SE 5+ programming experience and an understanding of object-oriented design principles. HOTT's Java Programming course or equivalent knowledge provides a solid foundation.
Test Driven Development (TDD), and Refactoring Legacy Code Using Java Course Overview:
|Why Test? Think Twice, Write
Production Code Once
|Mocks, Fakes, Stubs and Drivers
||Database Unit Testing
|System, Regression and Acceptance Testing
||Patterns and Anti-Patterns in TDD
|Continuous Integration Servers/Automated Testing
||Risks Changing Legacy/Production Systems
||Seam Model: Finding or Creating a Seam for Changes
||Large Legacy Systems