Robolectric“需要INTERNET许可”

时间:2016-06-24 19:00:37

标签: android robolectric

当我使用Robolectric创建活动时,我收到此错误:

java.lang.IllegalArgumentException: INTERNET permission is required.

这就是我正在做的事情:

@Config(constants = BuildConfig.class,
    sdk = TestConfig.MIN_SDK_UNIT_TESTS,
    manifest = "src/main/AndroidManifest.xml")
@RunWith(RobolectricGradleTestRunner.class)
public class ATest {
  @Test public void testTrackDoNotAskMeAgainSelected() throws Exception {
    final AnActivity activity = Robolectric.buildActivity(AnActivity.class).create().get();
}

更新1: 我们目前的设置,我们有这样的表现:

app/src/androidTest/AndroidManifest.xml
app/src/debug/AndroidManifest.xml
app/src/main/AndroidManifest.xml
app/src/test/AndroidManifest.xml

我发现执行了debug而不是test,这就是app/src/test/AndroidManifest.xml中的权限被忽略的原因。

3 个答案:

答案 0 :(得分:0)

将此添加到您的清单中:

<uses-permission android:name="android.permission.INTERNET" />

答案 1 :(得分:0)

对于这种情况,请检查在debugTest flavor(文件夹)中使用AndroidManifest。

答案 2 :(得分:0)

初始化需要[INTERNET]权限作为单独功能的SDK [在我的情况下为[细分]]-

@VisibleForTesting()
public void initializeSegmentSdk() {
    // Create an analytics client with the given context and Segment write key.
    Analytics analytics = new Analytics.Builder(this, "xyz")
    // Enable this to record certain application events automatically!
    .trackApplicationLifecycleEvents()
    // Enable this to record screen views automatically!
    .recordScreenViews()
    .build();

    // Set the initialized instance as a globally accessible instance.
    Analytics.setSingletonInstance(analytics);
}

创建一个包含上述方法的类的Shadow,并重写此方法以返回空。

OR

每当调用initializeSegmentSdk()方法

时,您也可以使用 Mockito 不返回任何内容
相关问题