Я запускаю модульный тест Android и пытаюсь проверить возможность проверки разрешений во время выполнения в Android. Я подумал, что будет проще просто создать тестовый манифест в папке test
(НЕ в папке androidTest
). как это,
Однако он генерирует исключения java.lang.IllegalArgumentException: failed to configure ..mysdk.myTest.myTest: couldn't find 'mysdk/src/test/AndroidManifest.xml'
Я гуглил это пару дней и не мог найти подходящего решения. Я также прочитал пару потоков в stackoverflow. Но ни один из них не работает для меня (установить $MODULE_DIR$
, сбросить модульный тест в Edit Configuration
... и т. д.)
Вот тестовый код, и я просто использую Android Studio без сборки проекта для запуска тестовых случаев. (он отлично работает для тестовых случаев, не связанных с манифестом)
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, manifest =
"mysdk/src/test/AndroidManifest.xml")
public class myTest {
private Context context;
@Before
public void setUp() {
context = RuntimeEnvironment.application;
}
@Test
public void myTest() throws JSONException {
boolean hasWifiPermission context.checkCallingOrSelfPermission(Manifest.permission.INTERNET)
== PackageManager.PERMISSION_GRANTED;
assertTrue(hasWifiPermission);
}
java.lang.IllegalArgumentException: failed to configure
mycompany.mysdk.myTest.mytest: couldn't find 'mysdk/src/test/AndroidManifest.xml'
at org.robolectric.RobolectricTestRunner.getChildren(RobolectricTestRunner.java:256)
at org.junit.runners.ParentRunner.getFilteredChildren(ParentRunner.java:426)
at org.junit.runners.ParentRunner.getDescription(ParentRunner.java:351)
at com.intellij.junit4.JUnit4IdeaTestRunner.getDescription(JUnit4IdeaTestRunner.java:78)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:50)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:131)
Caused by: java.lang.IllegalArgumentException: couldn't find 'mysdk/src/test/AndroidManifest.xml'
at org.robolectric.internal.DefaultManifestFactory.resolveFile(DefaultManifestFactory.java:58)
at org.robolectric.internal.DefaultManifestFactory.identify(DefaultManifestFactory.java:32)
at org.robolectric.RobolectricTestRunner.getAppManifest(RobolectricTestRunner.java:402)
at org.robolectric.RobolectricTestRunner.getChildren(RobolectricTestRunner.java:243)
... 12 more
Я использую Android Studio 3.0.1 и Roboletric 3.5.1.