问题描述
我有一个 xamarin.uitest 项目和一个应用项目, 在应用程序项目的主要活动中添加: MainLauncher = true 和方法:
[Export("MyInvokeMethod")]
public void MyInvokeMethod()
{
Console.WriteLine("TEST");
}
[Test]
public void MyInvokeMethodtest()
{
_app.Invoke("MyInvokeMethod");
}
我得到了: System.Exception:调用 MyInvokeMethod 失败,结果:错误 没有找到这样的方法:MyInvokeMethod()
我在这里做了所有事情:https://docs.microsoft.com/en-us/appcenter/test-cloud/frameworks/uitest/features/backdoors
在测试项目中:
[Test]
public void MyInvokeMethodtest()
{
_app.Invoke("RefreshMethod:");
}
仍然没有改变 我做错了什么?
解决方法
请按照以下步骤操作。我用你提供的代码做了测试。它对我来说效果很好。
-
创建名为
UITest
的 Xamarin.forms 项目并在 MainActivity 中添加以下代码。可能需要在 Xamarin.Android 项目中添加对Mono.Android.Export.dll
程序集的引用。public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { ...... LoadApplication(new App()); } [Java.Interop.Export("MyInvokeMethod")] public void MyInvokeMethod() { Console.WriteLine("TEST"); } }
-
在同一解决方案中创建名为
UITest1
的 UITest 项目。然后使用UITest.Android
添加引用。
-
在
AppInitializer.cs
中,在ApkFile
方法中添加StartApp
。public static IApp StartApp(Platform platform) { if (platform == Platform.Android) { return ConfigureApp.Android .EnableLocalScreenshots() //.InstalledApp("com.companyname.app2") .ApkFile(@"....\UITest\UITest\UITest.Android\bin\Release\com.companyname.uitest.apk") .StartApp(); } return ConfigureApp.iOS.StartApp(); }
-
在
Tests.cs
中添加以下代码。[Test] public void InvokeTest() { // Invoke the backdoor method MainActivity.MyBackDoorMethod app.Invoke("MyInvokeMethod"); }
- 在测试资源管理器中,您可以运行测试。