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

时间:2014-11-21 15:34:33

标签: android android-emulator xamarin nunit ui-testing

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

Google模拟器:

SetUp: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密钥的xtc_api-key文件放在测试程序集的上游目录中

Xamarin Android播放器:

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

GenyMotion:

SetUp:System.Exception:无法执行:/ users / erikandersen / Library / Developer / Xamarin / android-sdk-macosx / platform-tools / adb devices - 退出代码:1 无法绑定&#t; tcp:5037' ADB服务器没有确认 *未能启动守护进程* 错误: adb服务器已过期。杀死...

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

SetUp:System.Exception:App安装失败并输出:12050 KB / s(在0.907s中为11199602字节) pkg:/data/local/tmp/final-xxxxxx.apk 失败[INSTALL_FAILED_CPU_ABI_INCOMPATIBLE]

NUnit代码

    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 ();

背景:

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

我尝试过的事情:

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

2 个答案:

答案 0 :(得分:2)

所以,经过几个小时的研究,这就解决了这个问题:

  1. 将GennyMotion升级到2.3.1
  2. 删除我的旧GenyMotion模拟器(Nexus 4)并创建一个新模拟器
  3. 在我的Android Build设置中添加对所有ABI的支持
  4. Android项目>选项> Android Build>高级选项卡>支持的ABI>检查“armeabi,armeabi-v7a,x86”>行

    1. 通过终端生成新的.apk文件(在Android项目目录中)
    2. / usr / bin / xbuild / t:Package / p:Configuration = Release .csproj

      1. 通过calabash-android
      2. 辞职.apk

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

        1. 在Xamarin Studio中,将我的启动项目设置为我的UITest项目
        2. 启动GenyMotion模拟器
        3. 只使用GenyMotion模拟器激活调试配置下的测试
        4. 它有效!我仍然无法使用Google Emulator或Xamarin Android Player运行UI测试。有趣的是,我也无法使用GenyMotion调试我的Android项目。这对UITests只有好处。这是我目前的设置:

          Xamarin Android Player - 正常调试

          GenyMotion - UITests

答案 1 :(得分:0)

我遇到了同样的问题,并在设置ConfigureApp时设置了ApiKey。

    [SetUp]
    public void SetUp()
    {
            _app = ConfigureApp.iOS.AppBundle(PathToIPA).ApiKey("YOUR_API_KEY_HERE").StartApp();
    }

here一样。把你的ApiKey放在那里。

注意:我对Xamarin Android Player没有这个问题。运行Android 5.0模拟器的AVD我没有遇到这个问题。我只在运行Android 4.0.3模拟器的AVD上遇到此问题。