1

我有一个可以像这样使用的应用程序:

type file.txt|app.exe -i

即我的应用程序将从file.txt 中读取数据。

现在我想编写一些测试来确保应用程序可以很好地处理 file.txt 中的一些特殊数据。

如何组织这个?

我的应用读取输入,例如

input = Console.In.ReadToEnd();

在没有读取数据的简单测试中,我只是使用 App 类,例如:

using(App app = new App())
{
  result = app.Run(args)
}
if (result != 0)
Assert.Fail("Failed");
4

1 回答 1

2

您可以将控制台输入替换为您自己的对象,例如StringReader,并提供您想要的任何输入:

var oldIn = Console.In;
try
{
    Console.SetIn(new StringReader("some input"));

    using (App app = new App())
    {
        // input = Console.In.ReadToEnd(); happens here
        result = app.Run(args);
    }

    if (result != 0)
    {
        Assert.Fail("Failed");
    }
}
finally
{
    Console.SetIn(oldIn);
}
于 2012-11-28T08:58:49.073 回答