Метод setUp в android.test.AndroidTestCase не издевается

Я пытаюсь смириться с новой функцией тестового тестирования Android Studio. Я выполнил инструкции на http://tools.android.com/tech-docs/unit-testing-support . В описании там явно упоминается ошибка «Method … not maceded» и предлагается поместить следующее в build.gradle :

 android { // ... testOptions { unitTests.returnDefaultValues = true } } 

Это работает, поскольку тесты выполняются при запуске из командной строки с помощью

 gradlew test --continue 

Но не тогда, когда я запускаю тестовый класс из Android Studio с помощью rightclick -> run. Таким образом, я снова получаю ту же ошибку:

 java.lang.RuntimeException: Method setUp in android.test.AndroidTestCase not mocked. See https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support for details. at android.test.AndroidTestCase.setUp(AndroidTestCase.java) at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74) 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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) 

Любые идеи о том, как это решить?

EDIT: содержимое тестового класса не имеет большого значения, потому что setUp теста не работает, я пробовал с самым простым классом:

 public class ContactFormToolTest extends AndroidTestCase { public void testSOmething(){ assertEquals(false, true); } } 

Также попробовал переопределить setUp, не имеет значения.

Solutions Collecting From Web of "Метод setUp в android.test.AndroidTestCase не издевается"

Новая функция Unit Tests в Android Studio подделывает весь Android SDK, чтобы вы могли быстро запускать тесты на Java, без необходимости устанавливать приложение на Android-устройство (это похоже на Robolectric). Общая идея заключается в том, что вы издеваетесь над ответами на вызовы Android SDK.

AndroidTestCase используется для запуска теста с помощью реального Android SDK.

Итак, ваша проблема заключается в том, что вы пытаетесь запустить AndroidTestCase который зависит от Android SDK, но ваш тестовый бегун запускает среду Unit Tests , которая использует поддельный Android SDK вместо реального.

Вам нужно выбрать один подход. Если вам нужен чистый единичный тест, то вам, скорее всего, следует использовать тестовый класс JUnit 4 вместо AndroidTestCase. Дополнительные инструкции здесь: https://developer.android.com/training/testing/unit-testing/local-unit-tests.html#build

От: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support#TOC-Method-…-not-mocked.-

Файл android.jar, который используется для запуска модульных тестов, не содержит никакого реального кода, который предоставляется изображением системы Android на реальных устройствах. Вместо этого все методы генерируют исключения (по умолчанию). Это делается для того, чтобы убедиться, что ваш модуль тестирует только ваш код и не зависит от какого-либо конкретного поведения платформы Android (которое вы явно не издевались, например, с помощью Mockito). Если это окажется проблематичным, вы можете добавить фрагмент ниже к вашему build.gradle, чтобы изменить это поведение:

 android { // ... testOptions { unitTests.returnDefaultValues = true } } 

Начиная с версии SDK 24, AndroidTestCase устарела

Этот класс устарел на уровне API 24.

Вместо этого используйте InstrumentationRegistry. Новые тесты должны быть написаны с использованием библиотеки поддержки тестирования Android .

Вы должны использовать среду Espresso для тестирования пользовательского интерфейса. Есть учебник .