Android与Robolectric的测试:无法识别Facebook SDK
我们正试图在Android Studio中使用Robolectric测试框架来测试Facebook API。Facebook登录按钮可以工作,因此Facebook API可以工作。但是,以下测试失败:Android与Robolectric的测试:无法识别Facebook SDK,android,facebook,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.j
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登录按钮也不满意:(但它是有效的……我们认为我们需要导入一些东西,但我们不知道放在哪里。膨胀异常是因为Robolectric无法从Facebook SDK中找到资源。要解决这个问题,必须更新
project.properties
文件以指向Facebook SDK项目。通过添加以下命令来实现这一点:连接到it的ng线路:
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库项目。进一步阅读:和。此外,可以找到有关project.properties
的更多文档。请注意,在我的项目中,Robolectric测试位于Android应用程序项目本身。因此,您也可以尝试放置>project.properties
文件与用于测试的AndroidManifest.xml
文件位于同一目录中
至于你的第一个问题,我个人没有这方面的经验。但这似乎是因为Gradle在编译单元测试时找不到支持库。问题的答案应该会解决它