我正在使用测试驱动开发方法用 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
也会失败。
这是我第一次使用单元测试,所以我有点困惑。我怎样才能避免这个问题?我的设计有问题吗?