WCF サービスでいくつかの単体テストを実行しています。サービスは、障害応答に例外の詳細を含めるように構成されています (私のサービス構成ファイルには次のものがあります)。
<serviceDebug includeExceptionDetailInFaults="true" />
テストによってサーバー上で未処理の例外が発生した場合、完全に設定されたサーバー スタック トレースを使用して、クライアントが障害を受け取ります。これは、例外のToString()
メソッドを呼び出すことで確認できます。問題は、これが私が試したどのテスト ランナー (xUnit、Gallio、MSTest) でも出力されないように見えることです。それらは、例外の Message および StackTrace プロパティを出力するだけのようです。
私が何を意味するかを説明するために、次の単体テストは 3 つのセクションを出力します。
- エラーメッセージ
- エラー スタック トレース
- 標準コンソール出力 (必要な情報が含まれています。たとえば、「Fault Detail は、IncludeExceptionDetailInFaults=true によって作成された可能性が高い ExceptionDetail と等しく、その値は次のとおりです: ...」
public void Test()
{
try
{
service.CallMethodWhichCausesException();
}
catch (Exception ex)
{
Console.WriteLine(ex); // this outputs the information I would like
throw;
}
}
編集:ただし、 オブジェクトのプロパティ内のコンテンツを確認するために、各テストで例外をキャッチしてコンソールに書き込むことを余儀なくされないようにしたいと思います。FaultException
Detail
例えば、
public void Test()
{
service.CallMethodWhichCausesException();
}
この情報があれば、テストと展開の初期段階での負担が大幅に軽減されます。
各単体テストを一般的な例外ハンドラーでラップし、例外をコンソールに書き込み、すべての単体テスト内で (上記のように) 再スローできることはわかっていますが、これを達成するには非常に長い方法のようです (そして、かなりひどく見えるでしょう)。 )。
未処理の例外が発生するたびにこの情報を含める方法があるかどうかは誰にもわかりませんか? 不足している設定はありますか? サービス構成に適切な障害処理が欠けていますか? おそらく、何らかのユニット テスト フレームワーク用の何らかのプラグイン/アダプターを作成できますか? おそらく、代わりに使用する必要がある別の単体テスト フレームワークがあります。
私の実際のセットアップは、開発環境用に Gallio を介して実行される xUnit ユニット テストですが、エンジニアに xUnit GUI テスト ランナー (またはGallio など) を使用して、最終的な展開を簡素化します。
ありがとう。
アダム