android - Xamarin.UITests Android 设备未检测到或不工作

标签 android android-emulator xamarin nunit ui-testing

我无法在任何 Android 模拟器/模拟器上运行 Xamarin.UITests。有什么建议么?我在尝试时遇到以下错误:

谷歌模拟器:

设置:System.Exception:无法在未激活的情况下在物理设备上运行。 完整版可供 Xamarin Test Cloud 客户使用,有关详细信息,请联系 sales@xamarin.com 如果您已经是 Xamarin Test Cloud 客户,您可以通过以下方式之一提供您的 api: * 使用ApiKey方法添加ConfigureApp * 设置 XTC_API_KEY 环境变量 * 将以下属性添加到您的 Properties/AssemblyInfo.cs 文件:[assembly: Xamarin.UITest.TestCloudApiKey(YOUR_API_KEY)] * 将包含您的 api key 的 xtc_api-key 文件放在测试程序集的上游目录中

Xamarin Android 播放器:

设置:System.Exception:没有连接设备

GenyMotion:

设置:System.Exception:执行失败:/users/erikandersen/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/adb devices - 退出代码:1 无法绑定(bind) 'tcp:5037' ADB 服务器没有 ACK * 无法启动守护进程 * 错误: adb 服务器已过期。杀…

将 GenyMotion 更新到 2.3.1 后,我现在收到以下错误:

设置:System.Exception:应用程序安装失败,输出:12050 KB/s(11199602 字节,0.907 秒) pkg:/data/local/tmp/final-xxxxxx.apk 失败 [INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]

N单元代码

    AndroidApp _app;
    public string PathToAPK { get; set; }

    [TestFixtureSetUp]
    public void BeforeAll ()
    {
        var path = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;
        var info = new FileInfo(path);
        var directory = info.Directory.Parent.Parent.Parent.FullName;

        PathToAPK = Path.Combine(directory, "Android", "bin", "Debug", "Demo.Android.apk");
    }

    [SetUp]
    public void BeforeEach ()
    {
        _app = ConfigureApp.Android.ApkFile (PathToAPK).StartApp ();
    }

    [Test]
    public void TestInvalidEmail ()
    {
        _app.EnterText (c => c.Class ("UITextField"), "");
    }

TestInvalidEmail() 从未被调用,因为 NUnit 在

上失败
_app = ConfigureApp.Android.ApkFile (PathToAPK).StartApp ();

背景:

我正在为我正在开发的 iOS/Android 应用程序使用 Xamarin.UITests,但我们遇到了 Android 方面的问题。 iOS 工作正常。我已经将每个测试编写了两次,一次在 C# 中,一次在 Ruby 中使用葫芦,以便隔离问题。 Calabash 工作正常,但任何 C# NUnit 测试项目都无法连接到我尝试启动的任何模拟器。

我尝试过的:

  1. 在运行测试之前确保模拟器已经在运行
  2. 确保只有 1 个模拟器在运行
  3. 重启 adb 服务器
  4. 尝试多种类型的模拟器(即 Xamarin Android Player、Gennymotion 和 Google 模拟器)

最佳答案

因此,经过几个小时的工作,这修复了它:

  1. 将 GennyMotion 升级到 2.3.1
  2. 删除我的旧 GenyMotion 模拟器 (Nexus 4) 并创建一个新的
  3. 在我的 Android build设置中添加对所有 ABI 的支持

Android Project > Options > Android Build > Advanced Tab > Supported ABIs > Check "armeabi, armeabi-v7a, x86"> OK

  1. 通过终端生成一个新的 .apk 文件(在 Android 项目目录中)

/usr/bin/xbuild/t:Package/p:Configuration=Release.csproj

  1. 通过 calabash-android 退出 .apk

calabash-android resign ./bin/Release/.apk

  1. 在 Xamarin Studio 中,将我的启动项目设置为我的 UITest 项目
  2. 启动 GenyMotion 模拟器
  3. 在仅启用 GenyMotion 模拟器的调试配置下运行测试

成功了!我仍然无法使用 Google Emulator 或 Xamarin Android Player 运行 UI 测试。有趣的是,我也无法使用 GenyMotion 调试我的 Android 项目。它只适用于 UITest。所以这是我当前的设置:

Xamarin Android Player - 正常调试

GenyMotion - UITests

关于android - Xamarin.UITests Android 设备未检测到或不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27064899/

相关文章:

java - Android - 如何检测屏幕上的触摸是 "scroll"触摸?

java - 字符串数组和字符串

android - 在未检测到 x86 系统镜像的 Windows 上创建 Google TV AVD

xamarin - 如何在Xamarin Forms中实现Google Auth登录?

javascript和css在PC上获取窗口宽度不同于手机和平板电脑

android - 蓝牙设备扫描不完整

android - cordova run android 执行良好。但Android 4.1.2 不启动应用

android - Lollipop 在我的应用程序中将按钮的文本大写

android - 如何以xamarin形式通过指纹注册用户?

Xamarin 中的 iOS 构建大小