锁定老帖子 主题:C#有GUI测试的框架么?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-07-09
那么,C#有类似的GUI测试框架么?我搜索了Web,在SourceForge上也查询了一遍,没有发现类似的东西。 注意我不是在问NUnit。 如果你有好的自己实现类似框架的建议,也请告诉我。我在自己做类似东西时也遇到了问题(C#的实现不像Java基本是开源的,遇到一些消息和同步的问题无法调试解决)。 谢谢。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-07-09
我是新人,很少来这里,.net的GUI测试框架也找了很长时间,同样一无所获,不过我只是又疑惑,因为很少对GUI做单元测试,大家经常做GUI的单元测试吗?
@.@||~ |
|
返回顶楼 | |
发表时间:2006-07-10
jimmy_c 写道 如果做过Java GUI自动化测试的人可能会听说过Jemmy,这是NetBean提供的GUI自动化测试框架。
那么,C#有类似的GUI测试框架么?我搜索了Web,在SourceForge上也查询了一遍,没有发现类似的东西。 注意我不是在问NUnit。 如果你有好的自己实现类似框架的建议,也请告诉我。我在自己做类似东西时也遇到了问题(C#的实现不像Java基本是开源的,遇到一些消息和同步的问题无法调试解决)。 谢谢。 GUI的测试框架,可以去试下MSAA (Active Accessibility)是给残疾人士使用的帮助系统,比如不能使用鼠标的人员.有视觉障碍的人. [code ] Microsoft 活动访问 (MSAA) 是一种对于使用辅助功能的人士使计算机程序更易于访问的技术。对于开发人员,它还可以扩展测试工具和其他专用实用工具的功能。可在 MSAA Web 站点上找到有关 MSAA 的详细信息。 通过MSAA 可以访问到GUI界面上的每一个对象,进行操作,和返回值的检测. 当然程序本身必须支持MSAA接口. 从资料上来看C#的GUI是已经加入了MSAA接口的. 剩下的就是编程去通过MSAA的接口去操作GUI对象了. 参考: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/gettingstarted_6ckk.asp http://chs.gotdotnet.com/quickstart/winforms/doc/WinFormsMSAA.aspx |
|
返回顶楼 | |
发表时间:2006-07-10
jack 写道 jimmy_c 写道 如果做过Java GUI自动化测试的人可能会听说过Jemmy,这是NetBean提供的GUI自动化测试框架。
那么,C#有类似的GUI测试框架么?我搜索了Web,在SourceForge上也查询了一遍,没有发现类似的东西。 注意我不是在问NUnit。 如果你有好的自己实现类似框架的建议,也请告诉我。我在自己做类似东西时也遇到了问题(C#的实现不像Java基本是开源的,遇到一些消息和同步的问题无法调试解决)。 谢谢。 GUI的测试框架,可以去试下MSAA (Active Accessibility)是给残疾人士使用的帮助系统,比如不能使用鼠标的人员.有视觉障碍的人. [code ] Microsoft 活动访问 (MSAA) 是一种对于使用辅助功能的人士使计算机程序更易于访问的技术。对于开发人员,它还可以扩展测试工具和其他专用实用工具的功能。可在 MSAA Web 站点上找到有关 MSAA 的详细信息。 通过MSAA 可以访问到GUI界面上的每一个对象,进行操作,和返回值的检测. 当然程序本身必须支持MSAA接口. 从资料上来看C#的GUI是已经加入了MSAA接口的. 剩下的就是编程去通过MSAA的接口去操作GUI对象了. 参考: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/gettingstarted_6ckk.asp http://chs.gotdotnet.com/quickstart/winforms/doc/WinFormsMSAA.aspx 有趣。Java UI 应该也有一套。哪位知道? |
|
返回顶楼 | |
发表时间:2006-07-13
jack 写道 jimmy_c 写道 如果做过Java GUI自动化测试的人可能会听说过Jemmy,这是NetBean提供的GUI自动化测试框架。
那么,C#有类似的GUI测试框架么?我搜索了Web,在SourceForge上也查询了一遍,没有发现类似的东西。 注意我不是在问NUnit。 如果你有好的自己实现类似框架的建议,也请告诉我。我在自己做类似东西时也遇到了问题(C#的实现不像Java基本是开源的,遇到一些消息和同步的问题无法调试解决)。 谢谢。 GUI的测试框架,可以去试下MSAA (Active Accessibility)是给残疾人士使用的帮助系统,比如不能使用鼠标的人员.有视觉障碍的人. [code ] Microsoft 活动访问 (MSAA) 是一种对于使用辅助功能的人士使计算机程序更易于访问的技术。对于开发人员,它还可以扩展测试工具和其他专用实用工具的功能。可在 MSAA Web 站点上找到有关 MSAA 的详细信息。 通过MSAA 可以访问到GUI界面上的每一个对象,进行操作,和返回值的检测. 当然程序本身必须支持MSAA接口. 从资料上来看C#的GUI是已经加入了MSAA接口的. 剩下的就是编程去通过MSAA的接口去操作GUI对象了. 参考: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msaa/gettingstarted_6ckk.asp http://chs.gotdotnet.com/quickstart/winforms/doc/WinFormsMSAA.aspx 研究了一下这两个链接. 没有看出来他们能够如何用于自动化测试:( |
|
返回顶楼 | |
发表时间:2006-07-13
获得GUI对象以及对象的属性是比较简单的,这并不是这个问题的难点所在.
比如可以遍历Controls数组,找到该控件.通过类型转换以及Reflection,都可以得到所需的属性. 比较困难的是处理一些异步消息和线程.比如,弹出一个对话框之后获得该对话框.似乎就不如Java中容易实现. 你可以参考Jemmy中的JDialogOperator,了解我所说的是什么意思. |
|
返回顶楼 | |
发表时间:2006-07-14
jimmy_c 写道 获得GUI对象以及对象的属性是比较简单的,这并不是这个问题的难点所在.
比如可以遍历Controls数组,找到该控件.通过类型转换以及Reflection,都可以得到所需的属性. 比较困难的是处理一些异步消息和线程.比如,弹出一个对话框之后获得该对话框.似乎就不如Java中容易实现. 你可以参考Jemmy中的JDialogOperator,了解我所说的是什么意思. 我并不懂Java的任何内容.不过异步消息和线程中的对话框的测试问题,不难解决啊。可以为了测试加入特殊的标识啊。而且win32系统中全部的窗口都是有迹可寻的,看下spy++和MSAA相关的一些工具你就知道了。至于用c#的reflection来做GUI测试,有点夸张了。 |
|
返回顶楼 | |
发表时间:2006-07-14
但是你应该了解,在实际的开发工作中,并不是所有的代码都是可以改动的.
GUI测试框架的设计目标应该是无侵入的辅助工具,因为测试集合是一种随时可以独立变更的东西,而Test Driven Design并不意味着实现一定要给测试留出接口. 如果可以改动原代码,那么当然很简单了,我完全可以给每个类一个Test()方法,但这显然不是我想要的东西.这种虽然也是一种测试的实现方式,但是应该不是多数人需要的东西. Reflection机制在C#或java中都是很基础的东西,是很多设计模式必须的设计元素,我想它比强制在原有类中插入一个用户不需要的interface要简单的多. |
|
返回顶楼 | |
发表时间:2006-07-14
Expression 写道 我是新人,很少来这里,.net的GUI测试框架也找了很长时间,同样一无所获,不过我只是又疑惑,因为很少对GUI做单元测试,大家经常做GUI的单元测试吗?
@.@||~ GUI自动化测试不是所有项目都需要的东西,因为对于UI变化较大的项目,测试代码本身有维护问题,很可能得不偿失(我觉得90%可能会如此). 但是对于一些比较成熟的产品,如果有GUI自动化测试,会很大的提高开发效率. |
|
返回顶楼 | |
发表时间:2006-07-14
引用 不过异步消息和线程中的对话框的测试问题,不难解决啊
不是很容易,至少我对几个对话框写了一点儿测试代码,发现它们非常不稳定. 在有些简单对话框中可以工作,对于复杂对话框就可能死锁.Tab控件中的控件不能显示.等等. 相比较而言,java中似乎简单很多. 即使解决了一个对话框的问题,实现整个框架也是一个挺复杂的工作.需要实现很多代码才能达到实用的目的. 所以我很想知道是否已经有人做过类似的工作,或者研究过这个问题.[/b] |
|
返回顶楼 | |