【发布时间】:2016-04-20 11:31:35
【问题描述】:
我正在尝试 Nunit 测试一个方法,我断言我得到了正确的输出,但问题是每次代码跳转到:
Console.SetCursorPosition(xOffset, yOffset++);
而且显然你不能重定向 SetCursorPosition,所以我的问题是:..“无论如何我可以合理地对这个方法进行单元测试”
public void Execute()
{
int xOffset = 84;
int yOffset = 3;
Console.SetCursorPosition(xOffset, yOffset++);
Console.WriteLine("Events");
string header = "| LogType | Message | tagCollection | Time |";
Console.SetCursorPosition(xOffset, yOffset++);
Console.WriteLine(header);
Console.SetCursorPosition(xOffset, yOffset++);
Console.WriteLine(new string('-', header.Length));
if (!string.IsNullOrWhiteSpace(Status))
{
Console.SetCursorPosition(xOffset, yOffset++);
Console.WriteLine(Status);
}
foreach (string str in NotificationList)
{
Console.SetCursorPosition(xOffset, yOffset++);
Console.WriteLine(str);
}
}
这是我的测试:
[Test]
public void NotificationDisplayer_inputTestString_ExpectedResult()
{
using (StringWriter sw = new StringWriter())
{
Console.SetOut(sw);
uutNotificationDisplayer.Execute();
Assert.That(sw.ToString()), Is.EqualTo(expectedResult));
}
}
【问题讨论】:
-
为什么不做一个模拟方法并改变 y 的偏移值?因为从技术上讲,这就是您要在测试中验证的内容。不仅如此,您能否也给我们您的单元测试!!
标签: c# unit-testing testing nunit