使用 Robolectric : not recognizing Facebook SDK 进行 Android 测试

标签 android facebook

我们正在尝试使用 Android Studio 中的 Robolectric 测试框架来测试 Facebook API。 Facebook 登录按钮有效,因此 Facebook API 正常工作。但是,以下测试失败:

    package com.airportapp.test.Models;

    import android.app.Activity;

    import org.junit.Assert;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.robolectric.annotation.Config;
    import org.robolectric.Robolectric;
    import com.airportapp.test.MyRobolectricTestRunner;
    import com.airportapp.LoginActivity;

    import static org.junit.Assert.assertFalse;
    import static org.junit.Assert.assertTrue;

    @RunWith(MyRobolectricTestRunner.class)

    public class LoginActivityTest {
            @Before
            public void setup() {
            //do whatever is necessary before every test
            }

    @Test
    public void testActivityFound() {
            Activity activity = Robolectric.buildActivity(LoginActivity.class).create().get();

            Assert.assertNotNull(activity);
            }
    }

错误是当我们运行测试时 Android Studio 找不到 android.support 文件。您可以在此处看到错误:enter image description here

出现的另一个错误是: android.view.InflateException:XML 文件 app/src/main/res/layout/activity_login.xml 第 #-1 行(抱歉,尚未实现):错误膨胀类 com.facebook.widget.LoginButton

所以 Android Studio 也不满意 facebook 登录按钮 :( 但它有效...我们认为我们需要导入一些东西,但我们不知道把它放在哪里。

最佳答案

InflateException 是因为 Robolectric 无法从 Facebook SDK 中找到资源。要解决此问题,必须更新 project.properties 文件以指向 Facebook SDK 项目。通过向其中添加以下行来执行此操作:

android.library.reference.1={Path}

{Path} 应该是相对路径,从 project.properties 文件到包含 Facebook SDK 项目的 AndroidManifest.xml 的文件夹。在我的例子中是 ../../build/intermediates/exploded-aar/com.facebook.android/facebook/3.21.0

请注意,这适用于所有包含 Robolectric 找不到的资源的 Android 库项目。进一步阅读:herehere .此外,可以找到有关 project.properties 的更多文档 here .请注意,在我的项目中,Robolectric 测试位于 Android 应用项目本身。因此,您也可以尝试将 project.properties 文件放在与用于测试的 AndroidManifest.xml 相同的目录中。

至于你的第一个问题;我没有个人经验。但这似乎是因为 Gradle 在编译单元测试时找不到支持库。 this的答案问题应该解决它。

关于使用 Robolectric : not recognizing Facebook SDK 进行 Android 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26321321/

相关文章:

android - 如何跟踪从 Unity 应用程序发送的 Facebook appRequest?

php - 如何在 php 中列出通知时从 sql 获取用户数据

ios - 在 swift 3.0 中实现 Facebook 和 Google 登录 API

java - 读入一个文件 Android

java - Android RecyclerView 仅在关闭并重新启动应用程序后显示项目

java - 如何从安卓设备上传位图图像?

java - 编辑资源文件时无法构建 Android 项目

javascript - 如何在 Facebook 个人资料中分享和播放音频 MP3 文件/

javascript - 为 FB 发送添加自定义按钮

android - 包含在 Eclipse 中用于抛出 "no resource found"的布局