论坛首页 编程语言技术论坛

C#有GUI测试的框架么?

浏览 13848 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2006-07-09  
如果做过Java GUI自动化测试的人可能会听说过Jemmy,这是NetBean提供的GUI自动化测试框架。
那么,C#有类似的GUI测试框架么?我搜索了Web,在SourceForge上也查询了一遍,没有发现类似的东西。

注意我不是在问NUnit。

如果你有好的自己实现类似框架的建议,也请告诉我。我在自己做类似东西时也遇到了问题(C#的实现不像Java基本是开源的,遇到一些消息和同步的问题无法调试解决)。

谢谢。
   发表时间:2006-07-09  
我是新人,很少来这里,.net的GUI测试框架也找了很长时间,同样一无所获,不过我只是又疑惑,因为很少对GUI做单元测试,大家经常做GUI的单元测试吗?
@.@||~
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间: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 应该也有一套。哪位知道?
0 请登录后投票
   发表时间: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


研究了一下这两个链接. 没有看出来他们能够如何用于自动化测试:(
0 请登录后投票
   发表时间:2006-07-13  
获得GUI对象以及对象的属性是比较简单的,这并不是这个问题的难点所在.
比如可以遍历Controls数组,找到该控件.通过类型转换以及Reflection,都可以得到所需的属性.
比较困难的是处理一些异步消息和线程.比如,弹出一个对话框之后获得该对话框.似乎就不如Java中容易实现.
你可以参考Jemmy中的JDialogOperator,了解我所说的是什么意思.
0 请登录后投票
   发表时间:2006-07-14  
jimmy_c 写道
获得GUI对象以及对象的属性是比较简单的,这并不是这个问题的难点所在.
比如可以遍历Controls数组,找到该控件.通过类型转换以及Reflection,都可以得到所需的属性.
比较困难的是处理一些异步消息和线程.比如,弹出一个对话框之后获得该对话框.似乎就不如Java中容易实现.
你可以参考Jemmy中的JDialogOperator,了解我所说的是什么意思.

我并不懂Java的任何内容.不过异步消息和线程中的对话框的测试问题,不难解决啊。可以为了测试加入特殊的标识啊。而且win32系统中全部的窗口都是有迹可寻的,看下spy++和MSAA相关的一些工具你就知道了。至于用c#的reflection来做GUI测试,有点夸张了。
0 请登录后投票
   发表时间:2006-07-14  
但是你应该了解,在实际的开发工作中,并不是所有的代码都是可以改动的.
GUI测试框架的设计目标应该是无侵入的辅助工具,因为测试集合是一种随时可以独立变更的东西,而Test Driven Design并不意味着实现一定要给测试留出接口.
如果可以改动原代码,那么当然很简单了,我完全可以给每个类一个Test()方法,但这显然不是我想要的东西.这种虽然也是一种测试的实现方式,但是应该不是多数人需要的东西.
Reflection机制在C#或java中都是很基础的东西,是很多设计模式必须的设计元素,我想它比强制在原有类中插入一个用户不需要的interface要简单的多.
0 请登录后投票
   发表时间:2006-07-14  
Expression 写道
我是新人,很少来这里,.net的GUI测试框架也找了很长时间,同样一无所获,不过我只是又疑惑,因为很少对GUI做单元测试,大家经常做GUI的单元测试吗?
@.@||~


GUI自动化测试不是所有项目都需要的东西,因为对于UI变化较大的项目,测试代码本身有维护问题,很可能得不偿失(我觉得90%可能会如此).
但是对于一些比较成熟的产品,如果有GUI自动化测试,会很大的提高开发效率.
0 请登录后投票
   发表时间:2006-07-14  
引用
不过异步消息和线程中的对话框的测试问题,不难解决啊


不是很容易,至少我对几个对话框写了一点儿测试代码,发现它们非常不稳定. 在有些简单对话框中可以工作,对于复杂对话框就可能死锁.Tab控件中的控件不能显示.等等.

相比较而言,java中似乎简单很多.

即使解决了一个对话框的问题,实现整个框架也是一个挺复杂的工作.需要实现很多代码才能达到实用的目的.

所以我很想知道是否已经有人做过类似的工作,或者研究过这个问题.[/b]
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics