2010-03-28 60 views
1

我有一個接受XMLA查詢,以分析服務的服務,很多時候,這些查詢本身將有一個包含看起來像防止Visual Studio中的Web測試

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

記錄這些片段的字符串請求工作正常,但是當我嘗試重新運行測試時,我收到來自測試運行器的錯誤...

請求失敗:發生異常:沒有上下文參數,名稱爲[[Time]。[Year] 。[全部]'在WebTestContext中

這讓人感到困惑了一段時間,但是當我要求VS生成一個編碼版本的測試時,我能夠看到問題更好一些。 VS搜索的「{{」和「}}」令牌,使變化,考慮這些地區是指上下文參數,代碼如下

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

任何人都知道如何指導Visual Studio中不執行這個替換操作?或者以另一種方式解決這個問題

回答

0

的情況下,替代行爲是自動的,不可控的,據我所知,但也有一些方法來解決它:

  • 生成編碼的測試,然後撤消什麼Visual Studio中的所作所爲,例如將this.Context["\n\t[Time].[Year].[All]"].ToString()替換爲"{{[Time].[Year].[All]}}"。雖然這很糟糕。

  • {{[Time].[Year].[All]}}字符串放入上下文參數中,並使用該上下文參數而不是原始字符串。 Visual Studio只應用一次上下文參數替換,所以它將只保留結果字符串值。

  • 第三種可能性是改變所有XMLA串{{[foo]}}的是[[[foo]]]然後寫該測試執行期間在PreRequest事件轉換[[[foo]]]{{[foo]}}一個WebTestPlugin或WebTestRequestPlugin。自動替換髮生在PreRequest之前,所以這是一個安全的時間將它們放回大括號。

1

使用雙花括號例如。 「{{}}」是多餘的。你只需要使用一套大括號,例如。 「{}」,或者如果生成了這個代碼,它也可以處理大括號之間的空格,例如。 「{{}}」

相關問題