Intereting Posts
Прочтите дополнительные данные Android о запуске приложения Unity Android: рисованная холстная краска исчезнет, ​​если возобновить приложение из панели уведомлений Как сохранить обратно в файл в папке с ресурсами Почему Proguard сохраняет класс активности в Android? Внедрение уведомлений о внедрении сервера Как создать TextView как ссылку, которая откроет другое действие в моем приложении? Тип файла – пустая строка при загрузке из собственного браузера Android SurfaceCreated: java.lang.NullPointerException Пользовательские представления Android с Kotlin Можно ли добавить любую торговую учетную запись в Google Android-кошельке Google? Выдает предложение при обработке исключений Как добавить опции в контекстное меню «Редактировать текст» на Android Как включить автоматический запуск приложения в xiaomi программно Обнаруживать или приближать задержку Bluetooth на Android (воспроизведение аудио) Android Host Host API: объем буфера переноса

Espresso 2.0 – метод, аннотированный с помощью класса @Test внутри класса, расширяющего тестовую таблицу junit3

Я получил странный Method annotated with @Test inside class extending junit3 testcase предупреждения, Method annotated with @Test inside class extending junit3 testcase при использовании нового класса ActivityInstrumentationTestCase2 поставляемого с Espresso 2.0.

Мой класс выглядит так же, как тот, который Google предоставил в качестве примера:

 import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.LargeTest; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import static android.support.test.espresso.matcher.ViewMatchers.assertThat; import static org.hamcrest.Matchers.notNullValue; @RunWith(AndroidJUnit4.class) @LargeTest public class MyCoolActivityTests extends ActivityInstrumentationTestCase2<MyCoolActivity> { private MyCoolActivity mActivity; public MyCoolActivityTests() { super(MyCoolActivity.class); } @Before public void setUp() throws Exception { super.setUp(); injectInstrumentation(InstrumentationRegistry.getInstrumentation()); mActivity = getActivity(); } @Test public void checkPreconditions() { assertThat(mActivity, notNullValue()); // Check that Instrumentation was correctly injected in setUp() assertThat(getInstrumentation(), notNullValue()); } @After public void tearDown() throws Exception { super.tearDown(); } } 

Я добавил все необходимые вещи в build.gradle:

 android { defaultConfig { testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } } dependencies { androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0' androidTestCompile 'com.android.support.test:testing-support-lib:0.1' } 

Есть ли способ получить это предупреждение?

ActivityInstrumentationTestCase2 является тестовым примером JUnit 3, поскольку он распространяется от TestCase .

Аннотации @Test заменяют условное соглашение об именах префикса, используемое в JUnit 3. Для тестовых классов JUnit 4 больше не требуется расширение TestCase или любого из его подклассов. На самом деле тесты JUnit 4 не могут расширить TestCase, иначе AndroidJUnitRunner будет рассматривать их как тесты JUnit 3.

http://developer.android.com/tools/testing-support-library/index.html#AndroidJUnitRunner

Вы можете либо перейти на ActivityTestRule, предоставленный com.android.support.test:rules:0.4 (или более поздней), либо придерживаться JUnit 3.

Другим вариантом является InstrumentationRegistry , предоставляемый Espresso 2, который имеет getInstrumentation() , getContext() , getTargetContext() (и более). Эти методы обеспечивают доступ к текущему инструментарию, контексту тестирования и целевому контексту статическим образом. Это позволяет писать собственные методы статической утилиты для использования в классах тестов JUnit 4. Эти утилиты будут имитировать функциональность, которая в настоящее время доступна только в базовых классах JUnit 3. (Это больше не нужно.)