0

質問はここから取得されます: SO - c# テストのタイムアウト

次のような単純な単体テストを作成しました。

[Timeout(1000)][TestMethod]
public void TestMethod1()
{
    try
    {
        System.Threading.Thread.Sleep(2000);
    }
    finally
    {
        Console.WriteLine("Executed");
    }
}

テストを実行すると、finally ブロックが実行されません。しかし、デバッグすると、そうです。なぜこうなった?

4

3 に答える 3

4

メソッドが2000ミリ秒スリープする間、テスト タイムアウトを1000ミリ秒に指定します。これにより、テスト メソッドがテスト フレームワークによって途中で強制的に閉じられるため、呼び出しから離れず、ブロックに到達する時間がありません。デバッグにより、タイムアウト属性が無効になる可能性があります。Sleepfinally

于 2012-11-22T14:46:16.107 に答える
1

Timeout属性は、デバッグセッションには適用されません。

于 2012-11-22T14:53:58.833 に答える
1

デバッグ中はタイムアウトが無効になるため、 Console.WriteLine() の出力が表示されます。

しかし、私はまだ vs2010 で最終的に実行されていると思います。メッセージ ボックス System.Windows.Forms.MessageBox.Show("finally") を表示しようとすると、ポップアップが表示されるはずです。

vs2010 で、タイムアウト後に Console.WriteLine 出力が失われます。

于 2012-11-22T14:59:21.770 に答える