Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GUI测试和访问.NET对象的本机属性/字段_C#_Coded Ui Tests_Gui Testing_Testcomplete_Ranorex - Fatal编程技术网

C# GUI测试和访问.NET对象的本机属性/字段

C# GUI测试和访问.NET对象的本机属性/字段,c#,coded-ui-tests,gui-testing,testcomplete,ranorex,C#,Coded Ui Tests,Gui Testing,Testcomplete,Ranorex,我的团队目前使用TestComplete进行自动化UI测试(针对.NET3.5WinForms应用程序)。我们正在考虑切换工具——一个主要原因是我们希望使用C#编写UI测试。(我们的非UI测试——单元测试、集成测试、系统测试——都是C#,我们的团队在用C#编写和组织代码方面经验丰富,我们喜欢测试代码编译时检查的好处,等等) 然而,TestComplete的一个非常重要的特性是能够访问AUT中.Net对象的本机属性。在我们的UI中有一些尴尬的地方,我们需要读取底层数据并进行一些运算,以确定如何执行

我的团队目前使用TestComplete进行自动化UI测试(针对.NET3.5WinForms应用程序)。我们正在考虑切换工具——一个主要原因是我们希望使用C#编写UI测试。(我们的非UI测试——单元测试、集成测试、系统测试——都是C#,我们的团队在用C#编写和组织代码方面经验丰富,我们喜欢测试代码编译时检查的好处,等等)

然而,TestComplete的一个非常重要的特性是能够访问AUT中.Net对象的本机属性。在我们的UI中有一些尴尬的地方,我们需要读取底层数据并进行一些运算,以确定如何执行下一个操作。 我们可以使用TestComplete的对象浏览器连接到GUI应用程序,开始探索控件层次结构,也可以探索.Net属性/字段。并在我们的自动化测试中访问相同的内容:

我很快就看过Ranorex(它勾选了C#box),从这个意义上讲,它似乎没有TestComplete那么强大。当属性/字段类型不可序列化时,它似乎会卡住并返回null:

在进程边界上复制对象似乎是合理的,对象应该是可序列化的,但是TestComplete在做什么呢?有什么恶心的事吗

我的问题是,是否有任何测试框架可以让这个属性浏览像TestComplete一样简单,同时允许我们用C#编写测试?(希望比TestComplete更不容易崩溃)


Ranorex链接似乎表明我们可以编写自己的(测试)代码来将对象映射到可以传输的对象,但这是额外的工作。此外,TestComplete的对象浏览器对于测试人员手动浏览应用程序的黑暗深度非常有用,而Ranorex的Spy工具不允许您浏览不可序列化的对象。

您是否尝试了InvokeRemotely()方法?它不应该有任何限制。

您是否研究过TestComplete中的C#Connected应用程序功能?它允许您使用Visual Studio中的TestComplete引擎和C#创建测试。更多信息可以在C#()帮助主题中创建连接的应用程序中找到。不,我不知道。我需要进一步调查,但这看起来很有希望。谢谢我不确定TestComplete是如何工作的。但当我使用Squish(它有类似的功能)时,它比反射做得更糟。它使用dllinjection读取原始值并返回它们。这是强大的,但不是很可靠。我相信TestComplete(&Ranorex)也使用dllinjection——否则他们如何看到单独流程的内部?在被测应用程序内部运行的代码(通过dllinjection)可以看到对象,但它如何将对象(或它们的代理)复制到测试过程中?