如何断言控制台的结果与预期相同?

时间:2014-06-29 09:53:01

标签: c# unit-testing

我已经实现了代码,我必须进行单元测试。我有一个Display()方法,最后在控制台中打印。因此,为了测试它,我必须声明控制台中打印的结果是预期的。这是Display()方法。

 public void Display(int[] playerPosition)
        {
            StringBuilder matrixAsStringBuilder = new StringBuilder();

            for (int row = 0; row < this.Rows; row++)
            {
                for (int col = 0; col < this.Cols; col++)
                {
                    if (playerPosition[1] == row && playerPosition[0] == col)
                    {
                        matrixAsStringBuilder.Append(this.PlayerSymbol);
                    }
                    else
                    {
                        matrixAsStringBuilder.Append(this.matrix[row, col]);
                    }

                    if (col < this.Cols - 1)
                    {
                        matrixAsStringBuilder.Append(" ");
                    }
                }
                matrixAsStringBuilder.Append("\n");
            }

            Console.WriteLine(matrixAsStringBuilder.ToString());
        }

如何验证控制台的结果是我的期望。再次感谢!

1 个答案:

答案 0 :(得分:4)

你没有。让Display返回String,然后以单独的方法将该字符串打印到控制台。您知道Console.WriteLine()有效,因此您只需测试执行处理的方法。

这也符合一般编程指南:让一种方法做一件事。它不应该同时处理数据并将其打印出来,至少不是因为这会诅咒方法命名:你称之为“显示”,但实际上它不仅仅是显示。