当我使用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
中的权限被忽略的原因。
答案 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()
方法