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 に答える