O'Reilly logo

Professional Test-Driven Development with C#: Developing Real World Applications with TDD by Jeff McWherter, James Bender

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

A REFACTORING EXAMPLE

Suppose that one of your friends is developing a tic-tac-toe game. He has created the front end that allows users to manage turns and to pick the square in which to place their mark. For this example, he has asked you to create a service that he can use to determine if either player has won by placing his or her mark in three adjacent squares to form a row horizontally, vertically, or diagonally.

By way of requirements, your friend tells you that he plans to represent the game board by creating a 3-by-3 multidimensional array of char data types, with the x-axis representing horizontal rows and the y-axis representing vertical columns. This array will be passed into the method you will write as the input parameter. Your friend wants the library to return the mark of the winning player (an X or an O) or a space character if neither player wins.

imagesTo follow along with the example shown here, download the code from www.wrox.com.

The First Feature

For this task you create a blank solution in Visual Studio called TicTacToe. To that solution you add a class library called TicTacToe.UnitTests that contains a class called GameWinnerServiceTests (which makes the fully qualified name of this class TicTacToe.UnitTests.GameWinnerServiceTests). You also add a reference to NUnit, which will serve as your unit test framework (see Figure 4-1).

The first feature your friend asks ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required