CodedUI测试 - 无法在sharepoint中跨环境重用测试

时间:2011-09-02 14:31:08

标签: c# sharepoint coded-ui-tests

我正在对sharepoint开发的应用程序使用CodedUI测试。问题是它不能在不同的环境中工作。因此,我必须为每个环境重新记录测试,这个环境很麻烦且容易出错。

通过一些调查,结果表明生成的clientId对于webpart中的服务器控件在每个环境中都是不同的(即使页面中的所有内容完全相同 - masterpage,pagelayout,webparts)。

要解决这个问题(几乎)我想到编辑SearchPropertyExpressions只是使用clientID的最后一段和“包含”运算符。如果您在designer.cs中手动编辑生成的代码,则此方法很有效。

我的问题是,是否有任何简单而优雅的方法可以实现自动化?

这是我到目前为止所尝试的内容: 我replaced索引器setter PropertyExpressionCollection类有我自己的函数。我使用此函数检查正在设置的值并使用字符串“ctl”更改它们并将其替换为字符串的最后一段(例如将“ctl0123_textbox1”替换为“textbox1”),最后使用contains运算符。它工作正常。但它不加区别地过滤输入 - 它不关心它是一个过滤器还是搜索,它甚至不知道它属于什么类型的控制。这种方法确实很糟糕。

1 个答案:

答案 0 :(得分:2)

我们现在面临完全相同的问题(必须支持我们的应用程序的20个自定义版本)。 我们来到的一般解决方案:

1)来自业务逻辑的抽象UI交互(我们有UITestControls的自定义结构,它将它们从XML文件反序列化)

2)每个客户端根据需要调整UI交互逻辑,并将其分支与开发人员调整应用程序的方式完全相同

3)因此,对于应用程序的每个分支(“不同的环境”),我们具有相同的逻辑但不同的UI层

4)我们现在可以给我们的测试提供用于此环境的XML UI符号文件,并且很高兴

这个解决方案很难,需要一些复杂的代码,但却给了我们所需的灵活性。 而且,我们不记录我们的测试,我们从头开始创建它们,因此代码很多更清洁,更易于维护。

希望这会有所帮助。 如果需要,我可以提供更详细的信息。