【问题标题】:Android Testing with Robolectric: not recognizing Facebook SDK使用 Robolectric 进行 Android 测试:无法识别 Facebook SDK
【发布时间】:2014-10-12 02:41:51
【问题描述】:

我们正在尝试使用 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 文件。你可以在这里看到错误:

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

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

【问题讨论】:

    标签: android facebook


    【解决方案1】:

    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 问题的答案应该可以解决它。

    【讨论】:

      猜你喜欢
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      相关资源
      最近更新 更多