Skip to content

Exercise for learning Test-Driven Development with the help of predefined tests

License

Notifications You must be signed in to change notification settings

luontola/tdd-mooc-tetris

Repository files navigation

TDD MOOC: Tetris

In this exercise you will be implementing a Tetris game using Test-Driven Development (TDD). The first couple dozen tests have already been written for you - just uncomment them one by one. This should help to get over the initial hurdle of knowing what tests to write when getting started with TDD. After that you'll be eased into writing your own tests.

The instructions on what to do are in the docs directory. This exercise is split into 10 "levels" which you should implement in order. They represent a realistic TDD approach of adding features incrementally.

To get you used to working in small, safe steps, there is the test TrainingWheels.test.mjs which will fail if you change more than 10 lines of production code at a time (similar to the previous exercise). Make it your goal to keep all the tests passing after every change, and commit only when the tests are passing.

Refer to the course material to learn more about TDD.


This exercise is part of the TDD MOOC at the University of Helsinki, brought to you by Esko Luontola and Nitor.

Tooling

This exercise uses JavaScript, the Vitest testing framework and Chai assertions, but the concepts are language agnostic. It would be quite easy to translate the example tests to another programming language as you go. There also exists an older Java-based predecessor of this exercise.

If you'd prefer the static types of TypeScript over JavaScript, you can rename the files from *.mjs to *.ts and things should work. (Please create an issue or PR if the TypeScript config needs changes that would benefit all students; the TS support was added only recently.)

Prerequisites

You'll need a recent Node.js version. Then download this project's dependencies with:

npm install

Developing

Run tests once

npm run test

Run tests continuously

npm run autotest

Start a web UI for playing the game at http://127.0.0.1:8080

npm run start

Code reformat

npm run format

About

Exercise for learning Test-Driven Development with the help of predefined tests

Topics

Resources

License

Stars

Watchers

Forks