テスト駆動開発アプローチを使用して、C#で小さなゲームを書いています。私は問題に直面しています:
私はクラスを持っていますCheckersBoard
:
public class CheckersBoard
{
private const string InitialBoardPattern = "B-B-B-B-" +
"-B-B-B-B" +
"B-B-B-B-" +
"--------" +
"--------" +
"-W-W-W-W" +
"W-W-W-W-" +
"-W-W-W-W";
public SquareStatus[,] Squares { get; private set; }
public CheckersBoard(IBoardGenerator boardGenerator)
{
Squares = boardGenerator.GenerateFromPattern(InitialBoardPattern, 8, 8);
}
//....
}
そしてクラスBoardGenerator
:
public class BoardGenerator : IBoardGenerator
{
public SquareStatus[,] GenerateFromPattern(string pattern, int width, int height)
{
//....
}
}
BoardGenerator
CheckersBoard
非常に読みやすい方法で初期化できます。BoardGenerator
だから、私は本当に醜い配列の初期化を避けるために私のユニットテストで使用したいと思います。
しかし、すべての単体テストを互いに独立させておく必要があるという規則に反しています。のテストがGenerateFromPattern
失敗した場合、それは「カスケード」効果を生み出し、使用GenerateFromPattern
するすべてのテストも失敗します。
ユニットテストを使うのはこれが初めてなので、少し混乱しています。この問題を回避するにはどうすればよいですか?私のデザインに何か問題がありますか?