0

FitNesse テストで WCF サービスを呼び出そうとしています。次のコードでクライアントを初期化しようとしているとき:

    using (var client = new Status.StatusSoapClient())
    {
        client.Endpoint.Address = new EndpointAddress(url);
        response = client.GetProductionTicketStatus(dealerId, orderId, orderLineId);

    }

エラーが発生します:

System.InvalidOperationException: ServiceModel クライアント構成セクションでコントラクト 'Status.StatusSoap' を参照する既定のエンドポイント要素が見つかりませんでした。

.NET Framework は DLL の構成をサポートしていないため、これは理にかなっています。

MSDN ライブラリには、「構成コードを、ホスティング環境によって認識される構成ファイルに移動する必要があります」と記載されています。しかし、FitNesse でこれが可能かどうかはわかりません。

そのため、構成から読み取ろうとせずに自分でバインディングを作成しようとしました

    var binding = new BasicHttpBinding();
    binding.SendTimeout = new TimeSpan(0, 0, 0, 0, 100000);
    binding.OpenTimeout = new TimeSpan(0, 0, 0, 0, 100000);
    binding.MaxReceivedMessageSize = 10000;
    binding.ReaderQuotas.MaxStringContentLength = 10000;
    binding.ReaderQuotas.MaxDepth = 10000;
    binding.ReaderQuotas.MaxArrayLength = 10000;
    var endpoint = new EndpointAddress(url);
    var myClient = new Status.StatusSoapClient(binding, endpoint);
    response = myClient.GetProductionTicketStatus(dealerId, orderId, orderLineId);

しかし、このコードでテストを実行しようとすると、「テストが中断され、結果が不完全です。」FitNesse のエラー。

この回答https://stackoverflow.com/a/646177/2211481は、テストランナーの app.config のコピーを作成することを提案しています。app.config を Runner.exe.config にコピーして Runner フォルダーに配置し、最初のコードを再度実行すると、「テストが中断され、結果が不完全です」というメッセージが表示されます。FitNesse で再びエラーが発生しました。

これを解決する方法はありますか?

4

2 に答える 2

0

ここで説明されているように COMMAND_PATTERN を定義することで機能しました: http://twenty6-jc.blogspot.nl/2010/07/wcf-and-fitnesse-how-to-load-clients.html

!define COMMAND_PATTERN {%m -a c:\projects\someapplication\acceptancetests\acceptancetests.dll.config -r fitSharp.Slim.Service.Runner,c:\tools\nslim\fitsharp.dll %p}

テストランナーの app.config のコピーを作成することも、最終的には機能しました。

「テストが中断され、結果が不完全です」というメッセージが表示されました。デバッグ後に解決したコードの間違いによるエラー。

于 2014-12-11T13:48:41.680 に答える