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 仅应用一次上下文参数替换,因此它将单独保留生成的字符串值。

  • 第三种可能性是将所有 xmla 字符串{{[foo]}}更改为[[[foo]]],然后编写一个 WebTestPlugin 或 WebTestRequestPlugin,在测试执行期间转换回[[[foo]]]PreRequest事件。自动替换发生在 PreRequest 之前,因此这是将它们放回花括号的安全时间。{{[foo]}}

于 2011-06-01T16:11:29.630 回答