将Java.Lang.Object强制转换为接口

时间:2018-06-22 08:32:00

标签: c# xamarin xamarin.uitest

我目前正在为Android扫描仪应用程序编写UI测试。

由于我无法直接在UI测试中引用xamarin android项目,因为由于与Xamarin.UITest框架所使用的.Net Framework 4.6.1不兼容,扫描器服务将无法构建。

因此,我的Xamarin.Forms项目中有一个接口,其中包装了所需的类,该类由Xamarin Android项目中的类实现,并通过Export方法返回,因为您无权访问Xamarin中的应用运行时封装了apk运行时的UI测试。

Xamarin形式:

public interface IWrapper {
    public WrappedClass { get;}
} 

Xamarin Android:

public class Wrapper: Java.Lang.Object, IWrapper {
    public WrappedClass { get;}
    public Wrapper(WrapperClass wrapperClass){
       this.WrappedClass = wrapperClass;
  }
}

公开方法:

[Export]
public Wrapper GetWrapper(){
     Wrapper wrapper = new Wrapper(this._app.WrappedClass);
     return Wrapper;
}

Xamarin UI测试:

[SetUp]
public void BeforeEachTest() {
    //md541ff4e74307b9d66e591e6d9ce55078f.Wrapper@41562080
    object exportObject = this._app.Invoke("GetWrapper");
    // null
    IWrapper wrapper = (IWrapper)exportObject;
    this._appRuntimeWrappeClass = wrapper.WrappedClass;
}

是否甚至可以将对象转换为Interface并获得对基础运行时对象的访问权以影响您的应用?

0 个答案:

没有答案