Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Android 使用TestComplete进行Xamarin测试_Android_Xamarin_Testcomplete - Fatal编程技术网

Android 使用TestComplete进行Xamarin测试

Android 使用TestComplete进行Xamarin测试,android,xamarin,testcomplete,Android,Xamarin,Testcomplete,我已经在TestComplete论坛上问过同样的问题,但我希望在这里找到一个熟悉Xamarin的人,因为我的大多数问题都与Xamarin有关,而不是与TestComplete有关 我们即将将所有应用程序切换到Xamarin,并希望继续使用TestComplete进行UI测试。以前(在测试原生Android应用程序时),我们使用对象id来标识Android视图xmls中指定的ui控件。这非常方便,因为ID是 可读 独特的 应用程序运行期间的常数 在Xamarin上,控件似乎也有ID,但我们对它

我已经在TestComplete论坛上问过同样的问题,但我希望在这里找到一个熟悉Xamarin的人,因为我的大多数问题都与Xamarin有关,而不是与TestComplete有关

我们即将将所有应用程序切换到Xamarin,并希望继续使用TestComplete进行UI测试。以前(在测试原生Android应用程序时),我们使用对象id来标识Android视图xmls中指定的ui控件。这非常方便,因为ID是

  • 可读
  • 独特的
  • 应用程序运行期间的常数
在Xamarin上,控件似乎也有ID,但我们对它们有一些问题:

  • 大多数对象都没有id,有些对象的id是md5哈希。在Android上,大多数控件都有唯一的id是非常方便的,这似乎在Xamarin上已经消失了。关于这一点有三个问题:这些md5散列是基于什么的,它们什么时候会改变,是否有可能仍然设置我们自己的控件id
  • 某些对象以相同的id显示两次,但ObjectIndex不同。我只从iOS中了解到这种现象,在iOS中,UI是在运行时创建的,有时UI控件无法正确回收,因此如果再次打开同一个视图,可能会出现相同的控件,其中一个不可见,另一个可见。这是iOS上的一个难题,因为有时很难在TestComplete中确定当前可见的实例。我希望现在我们也能以某种方式摆脱它,但我不知道如何摆脱

对象ID的屏幕截图:(1):md5哈希,(2)某些对象出现两次

  • 对象只能访问到特定级别。例如,我们可以访问md52…MasterDetailContainer,并与之交互,但其唯一的子视图(“NO_ID”)是不可访问的。TestComplete无法在ObjectBrowser中显示它的屏幕截图,与它的任何交互(包括“在屏幕上突出显示”)都会导致错误。这也适用于它的所有孩子。解决这一问题尤为重要,因为我们所有的UI控件都是MasterDetailContainer的子控件,无法访问其子控件会导致测试无效
  • TestComplete、Xamarin表单设计器和Android UI Automator查看器在应用程序中显示相同视图的完全不同的对象层次结构。这怎么解释呢
我一直在和开发团队讨论这一切,但由于他们对Xamarin也是新手,他们也不知道答案。如果这里有人知道Xamarin coudl,我会很高兴帮助我们,因为有些问题阻碍了问题的解决

设置我们自己的控件id

您在该屏幕截图中引用的控件id显示了视图的Java类名。Xamarin在构建过程中为您从
C#
创建/访问的每个Java对象创建Android可调用包装器(
ACW

ACW的默认包名将基于导出类型的程序集限定名的MD5总和

您可以使用类属性控制生成的名称:

  • RegisterAttribute
  • BroadcastReceiverAttribute
    Name
  • ContentProviderAttribute
    Name
  • ActivityAttribute
    Name
  • ServiceAttribute
    Name
  • ApplicationAttribute
    Name
i、 e.如果您有一个子类
EditView
,并且希望覆盖默认的ACW名称生成:

[Register("com.sushihangover.SOApplication.AVeryCustomEditView")]
public class CustomEditView : EditView
{
   ~~~
}
但是,由于您引用了
Xamarins.Forms
,我假设您不是使用AXML(
Xamarin.Android
)而是使用XAML(
Xamarin.Forms
)来创建UI。表单通过独特的基于平台的渲染器及其自己的布局管理器以编程方式创建视图层次结构,因此,您将无法将通过Xamarin表单设计器可视化的XAML与通过Android UI Automator Viewer创建和查看的XAML一一对应,也无法将这些视图类应用于
将属性注册到


由于SmartBear表示他们支持
Xamarin.iOS
Xamarin.Android
,因此您应该与SmartBear一起创建一个支持案例,以了解他们如何以及是否也支持基于
Xamarin.Forms
的UI。

感谢您的回答!不幸的是,我们使用Xamarin.Forms,但我会问SmartBear。