1

分析サービスの Xmla クエリを受け入れるサービスがあります。多くの場合、これらのクエリ自体には、次のようなフラグメントを含む文字列があります。

{{[Time].[Year].[All]}}

これらのリクエストの記録は正常に機能しますが、テストを再実行しようとすると、テスト ランナーからエラーが発生します...

要求が失敗しました: 例外が発生しました: WebTestContext に ' [Time].[Year].[All]' という名前のコンテキスト パラメーターがありません

これはしばらく混乱を招きましたが、コード化されたバージョンのテストを生成するよう VS に依頼したところ、問題が少しよくわかりました。VS は '{{' および '}}' トークンを検索し、これらの領域がコンテキスト パラメーターを参照することを考慮して変更を加えます。コードは次のようになります。

this.Context["\n\t[Time].[Year].[All]"].ToString()

この置換操作を実行しないように Visual Studio に指示する方法を知っている人はいますか? または、この問題を回避する別の方法はありますか?

4

2 に答える 2

1

二重中括弧を使用します。「{{ }}」は冗長です。たとえば、単一のブレースセットを使用するだけで済みます。「{ }」またはこのコードが生成された場合、中括弧のセット間のスペースでも機能します。「{{}}」

于 2012-01-04T02:27:43.843 に答える
0

コンテキスト置換の動作は自動であり、私の知る限り制御できませんが、回避する方法がいくつかあります。

  • コード化されたテストを生成し、Visual Studio が行ったことを元に戻しthis.Context["\n\t[Time].[Year].[All]"].ToString()ます"{{[Time].[Year].[All]}}"。これはちょっとひどいですけどね。

  • 文字列をコンテキスト パラメーターに入れ{{[Time].[Year].[All]}}、生の文字列の代わりにそのコンテキスト パラメーターを使用します。Visual Studio はコンテキスト パラメーターの置換を 1 回だけ適用するため、結果の文字列値はそのままになります。

  • 3 番目の可能性は、すべての xmla 文字列を変更し{{[foo]}}てから、テスト実行中にPreRequestイベントで変換さ[[[foo]]]れる WebTestPlugin または WebTestRequestPlugin を記述することです。自動置換は PreRequest の前に行われるため、安全に中括弧に戻すことができます。[[[foo]]]{{[foo]}}

于 2011-06-01T16:11:29.630 に答える