Robolectric“需要INTERNET许可”

问题描述 投票:2回答:3

当我使用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的许可被忽略了。

android robolectric
3个回答
0
投票

将此添加到您的清单:

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


0
投票

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


0
投票

初始化SDK [在我的案例中]段,需要INTERNET权限作为单独的函数,如下所示 -

@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);
}

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

要么

每当调用initializeSegmentSdk()方法时,您也可以使用Mockito返回任何内容

© www.soinside.com 2019 - 2024. All rights reserved.