Я пытаюсь запустить Robolectric тесты в своих проектах.Android Studio 1.1.0 + Robolectric 2.4 вызывает java.lang.annotation.AnnotationFormatError
Я использую Andriod Studio 1.1.0 с поддержкой модульного тестирования (http://tools.android.com/tech-docs/unit-testing-support), и я делаю все, что аналогично проекту https://github.com/robolectric/deckard-gradle.
Когда я пытаюсь запустить тесты из в Android Studio я получаю следующее сообщение об ошибке:
Exception in thread "main" java.lang.annotation.AnnotationFormatError: Invalid default: public abstract java.lang.Class org.robolectric.annotation.Config.application()
at java.lang.reflect.Method.getDefaultValue(Method.java:747)
at sun.reflect.annotation.AnnotationType.<init>(AnnotationType.java:117)
at sun.reflect.annotation.AnnotationType.getInstance(AnnotationType.java:84)
at sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:221)
at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:88)
at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70)
at java.lang.Class.initAnnotationsIfNecessary(Class.java:3178)
at java.lang.Class.getAnnotation(Class.java:3137)
at com.intellij.junit4.JUnit4TestRunnerUtil.buildRequest(JUnit4TestRunnerUtil.java:199)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:39)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:211)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Любая идея о причине?
EDIT:
Я изменил мой тест, чтобы использовать пользовательский тест бегун класс вместо RobolectricTestRunner и @Config аннотацию и теперь я получаю:
java.lang.RuntimeException: java.lang.ClassNotFoundException: android.app.Application
, который, кажется, и быть причина выше AnnotationFormatError.
EDIT 2:
мне удалось найти обходной путь, хотя до сих пор я не знаю точную причину проблемы. Когда я бегу
gradlew clean test
из командной строки, я не получаю AnnotationFormatError и после этого, тесты могут быть запущены в AndroidStudio без проблем. Также не имеет значения, использую ли я @Config или собственный класс тестового runner. Кроме того, после каждого «чистого проекта» я должен запустить «градульный чистый тест», чтобы он работал.
отправьте способ установки вашего тестового примера. –
Можете ли вы поделиться одним из ваших источников тестового класса? –