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
игнорируется
2 ответа
Инициализируйте SDK [в моем случае Segment], для которого требуется разрешение 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);
}
Создайте Shadow класса, который содержит вышеуказанный метод, и переопределите этот метод, чтобы он возвращал пустой.
ИЛИ ЖЕ
Вы также можете использовать Mockito, чтобы ничего не возвращать всякий раз, когда initializeSegmentSdk()
метод называется
Пожалуйста, отметьте, чтобы использовать AndroidManifest в DebugTest (папку) для этого случая.
Добавьте это в свой манифест:
<uses-permission android:name="android.permission.INTERNET" />