8

こんにちは、私はテスト駆動開発を使った趣味のプロジェクトとしてチェスAIを作成しています。しかし、何らかの理由で、私のテストが提供する唯一のメッセージは、「テストが例外をスローしました:...」です。したがって、重要なことだけを省略します。エラーを直接読み取る代わりに、右クリックしてテスト結果の詳細を表示する必要があります。列の追加と削除を試みましたが、メッセージ全体を直接表示することができません。

ユニットテストごとに例外メッセージが直接表示されるようにVS2010を設定できますか?

編集:私は標準のVSユニットテストを使用しています:

[TestClass]
public class MiniMaxTest
{
    [TestMethod]
    public void TestConstructor()
    {
        throw new Exception("Must I click view details to see this?");
    }
}

なぜこれらの質問ですか?あなたたちはこれらのものを再現することができます。デバッグテストまたは実行テストで同じメッセージが表示されます。 例外メッセージは非表示のままです

4

1 に答える 1

2

いいえ、VS を別の方法で表示するように構成できるとは思いません。IDE には例外メッセージの最初の行が表示されます。完全なメッセージ テキストには改行文字があるため、すべてを表示するには詳細をクリックする必要があります。

ただし、できることは、MSTest フレームワークを悪用して独自のメッセージを表示することです。

MS テスト アサーションはすべて、例外をスローすることによって実装されます。すべての MS TestAssert関数は、から派生した例外をスローしますUnitTestAssertException。Visual Studio には、これらの種類の例外に対する特別な処理があります。

例: このテストを書く場合:

[TestMethod]
public void AllAboard()
{
    throw new AssertFailedException("Failboat");
}

AssertFailedException他のほとんどのアサーション エラーの標準基本クラスです。

VS2010 は一般的な「テストが例外をスローしました」というメッセージを出力せ、代わりに「Failboat」を出力することに注意してください。

これで、通常の例外を変換するものでテストを囲み、AssertFailedException好きなメッセージを出力できます。

[TestMethod]
public void TestStuff()
{
    try
    {
        string o = null; // pretend this came from some real code
        var x = o.Split(new[] { ',' }); // this will throw NullRefException
    }
    catch (Exception e)
    {
        throw new AssertFailedException(e.Message, e);
    }
}

もちろん、実際にこれを行うことはお勧めしません...冗長であり、さらに重要なことに、コールスタックが失われます...しかし、ツールベルトにもう1つのツールがあります

于 2012-06-17T22:56:38.947 に答える