This project is designed as an educational resource to familiarize you with Test-Driven Design (TDD). It begins with a rudimentary project structure that merely contains the basic architecture: a main program, a function declaration for conversion processes, and a couple of preliminary unit tests. These elements establish a foundational framework that encourages learning and applying TDD principles hands-on.
The repository organizational structure is delineated by programming languages. The languages available are C#, Java, C++, Python, Dart, and JavaScript
Each language-specific directory contains two crucial documents:
- README.md: Provides a general overview of that particular language's sub-codebase, guiding you through the basics and specific configurations tailored to the language.
- FRAMEWORK.md: This document serves as a tutorial explaining the main unit testing framework utilized by that language, offering both insights and step-by-step guidance on effective usage.
Each language-specific sub-folder contains its own README.md
file, which details step-by-step instructions on how to proceed with the assignments. These instructions are tailored to the specifics of each programming environment and testing framework, providing a clear path from setup to execution.
- Unit Testing Framework: The project leverages xUnit, a popular choice for unit testing in C# applications, thoroughly documented by Microsoft: Unit Testing with xUnit.net and .NET, with applied usage here on Medium, or alternatively in Video Form.
- Unit Testing Framework: JUnit is utilized, a staple for Java developers, integrated through Apache Maven. Additional information can be found in Maven’s official guide: Getting Started with Apache Maven, with applied usage here by Marc Nuri or alternatively in Video Form.
- Unit Testing Framework: The project utilizes doctest, a light, fast, and open-source testing framework for C++. Additional documentation is readily accessible here: doctest documentation, with applied usage here by Viktor Kirilov, or alternatively in Video Form.
- Unit Testing Framework: Python's native
unittest
library supports the TDD approach in this project. Additonal information is available on Python’s official documentation site: unittest — Unit testing framework, with applied usage here by FreeCodeCamp, or alternatively in Video Form.
- Unit Testing Framework: JavaScript's
jest
library supports the TDD approach in this project. Additonal documentation is available on their official documentation site: jest — Unit testing framework, with applied usage here by FreeCodeCamp, or alternatively in Video Form.
- Unit Testing Framework: Dart's
test
package is used to support the TDD approach in this project. Additional information is available on the official documentation site: Dart — Unit testing with the test package, with extra information here.
Upon completing the IntegerToWordedString()
functionality, follow these concise yet significant steps to enhance your Test-Driven Development (TDD) skills and refine your project:
-
Compare to zukixa-walkthru: It is highly suggested to compare your efforts with the one I have done with this repository, where I have provided an exemplary walkthrough of how to best complete a TDD project like sample-tdd. If your implementation significantly deviates, look at walkthru closely and understand why!
-
Expert Review: Schedule a session with a TDD expert (or talk to anyone knowledgeable on the topic, even ChatGPT!) to review your code and discuss the TDD process, even if your learning path doesn't formally require it. Use this opportunity to seek answers to any questions and gain insights into your code's structure and design.
-
Self-Reflection: Reflect on your experience with key questions:
- Have my unit tests covered all expected functionalities?
- What challenges did I encounter in TDD, and how were they resolved?
- How has TDD impacted the quality and reliability of my program?
- What improvements can I implement in future TDD projects?
-
Continuous Learning and Feedback: Keep enhancing your TDD proficiency when able through more complex projects and seek feedback from peers or mentors.
-
Expand Your Expertise: Continue exploring advanced TDD techniques and other testing methodologies to broaden your software testing skills and knowledge.
-
Take on the next layer: As part of the 'Home-of-TDD' group of repositories, you have now completed Level 1! Continuing with the Home-of-TDD path, with Level 2 can help you further practice your skills and knowledge with TDD.
These 'post-completion' next steps are not universal, but guidelines, as they may be different based on the context of situation that this project is being completed.
-
Additonal information, and the next layers of the Home of TDD can be found back at the Home Repository
-
Beyond the layered content, two PDF documents are provided in here to enhance your understanding and application of unit testing concepts:
- TDD Primer: This live document is derived from discussions with students who have previously engaged with this assignment, and is continuously updated based upon student feedback. (And a likely out of date
PDF version.) - Unit Testing: This document contains supplemental information that expands further on unit testing techniques and best practices. (And a likely out-of-date PDF version.)
- TDD Primer: This live document is derived from discussions with students who have previously engaged with this assignment, and is continuously updated based upon student feedback. (And a likely out of date