我正在尝试使用 TDD 用 C#(我对此非常陌生)编写一个控制台应用程序。
我试图迭代一个包含字符串作为键和整数作为值的字典,并将它们作为“key: value”输出到控制台。我尝试了很多不同的方法,最后找到了一些可能有效的方法:
public void ShowContents ()
{
foreach (KeyValuePair<string, int> item in dictionary) {
Console.WriteLine ("{0}: {1}", item.Key, item.Value);
}
}
我遇到的问题是 - 我不知道如何测试它。我的测试目前如下所示:
[Test ()]
public void CanShowContentsOfDictionary ()
{
dictionary.AddWord ("Hello");
Assert.AreEqual ("Hello: 1", dictionary.ShowContents ());
}
并且显然期望返回值而不是输出到控制台的内容。我在此处的其他地方读到,对 Console.WriteLine 进行测试没有意义,因为您只是假设它有效,因此您可以在此方法中使用 return ,然后编写另一个仅写入控制台的方法(因此不需要进行测试)。问题在于:a)我不知道如何编写一个返回所有键和值的方法; b) 我不是返回一件东西,而是返回一些不同的字符串。
关于我如何解决这个问题有什么建议吗?
最佳答案
您可以编写一个函数来返回由 ShowContents
输出的整个字符串;像这样:
public string GetContents()
{
var sb = new StringBuilder();
foreach (KeyValuePair<string, int> item in dictionary) {
sb.AppendLine(string.Format("{0}: {1}", item.Key, item.Value));
}
return sb.ToString();
}
那么你的ShowContents
就是:
Console.Write(GetContents());
您可以测试 GetContents
返回您期望的内容,而无需涉及 Console.WriteLine
。
关于c# - 测试我是否可以迭代字典并将键和值写入控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335529/