Intereting Posts
Активность, AppCompatActivity, FragmentActivity и ActionBarActivity: когда использовать что? Android – Что такое вторичный прогресс в ProgressBar? ImageView.setImageURI НЕ работает при попытке назначить R.drawable.X Uri Просмотрите общие настройки Android-приложения? Вызывается: java.lang.IllegalStateException: пакет не установлен? Значок приложения не отображается на панели действий в android lolipop и выше Ошибка «Идентификатор ресурса не найден» с образцом проекта Android Эмулятор Android использует 100% -ный процессор, даже если ничего не работает на нем? Невозможно загрузить приложение Android на устройство (устаревшие банки с деменцией) Как создать банку Android Library с градиентом без публичного раскрытия исходного кода? Как зашифровать файл с SD-карты с помощью AES на Android? Min height fill_parent и height wrap_content в ScrollView? (Или просто приложение электронной почты составляет код макета) Android JUnit Testing … Как ожидать исключения Альтернатива getRunningTasks в Android L Кордова: не удалось установить apk после обновления Android до 5.1.1 Nexus 5

Тестовый тест эспрессо

Я изучаю аппаратное тестирование андроида с эспрессо. У меня есть приложение, в котором есть drawermenu, и есть меню под названием About. Я тестировал клик по этому пункту меню и содержимому активности.

функции теста:

@Test public void testNavigationDrawerAboutMenu() { onView(withId(R.id.drawer_layout)) .perform(DrawerActions.open()); //open drawer onView(withText("About")).perform(click()); onView(withId(R.id.aboutsptemail)).check(matches(withText(R.string.screen_about_support_email))); onView(withId(R.id.aboutcpright)).check(matches(isDisplayed())); onView(withId(R.id.aboutprivacy)).check(matches(isDisplayed())); onView(withId(R.id.abouttermsconditions)).check(matches(isDisplayed())); onView(withId(R.id.aboutsptemail)).perform(click()); } 

Теперь в последнем тексте есть встроенный weblink. Поэтому, когда вы нажимаете на него, он открывает ссылку (www.support.com) в веб-браузере в приложении. Я хочу проверить эту футурмальность. Поэтому я попробовал это:

 intended(hasComponent(WebViewActivity.class.getName())); //check if webview called on supportEmail link click 

Но тест не выполняется с этой ошибкой:

 java.lang.NullPointerException: Attempt to invoke virtual method 'android.support.test.espresso.intent.OngoingStubbing android.support.test.espresso.intent.Intents.internalIntending(org.hamcrest.Matcher)' on a null object reference at android.support.test.espresso.intent.Intents.intending(Intents.java:155) at com.ScanBuy.SmartLabel.NavigationDrawerActivityTests.testNavigationDrawerAboutMenu(NavigationDrawerActivityTests.java:94) at java.lang.reflect.Method.invoke(Native Method) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at android.support.test.internal.statement.UiThreadStatement.evaluate(UiThreadStatement.java:55) at android.support.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:270) at org.junit.rules.RunRules.evaluate(RunRules.java:20) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runners.Suite.runChild(Suite.java:128) at org.junit.runners.Suite.runChild(Suite.java:27) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at org.junit.runner.JUnitCore.run(JUnitCore.java:115) at android.support.test.internal.runner.TestExecutor.execute(TestExecutor.java:59) at android.support.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:262) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1879) 

Я также попытался решить проблему, простаивая ресурсы, прежде чем проверять намерение. Но не получилось. Может ли кто-нибудь помочь?

Solutions Collecting From Web of "Тестовый тест эспрессо"

У меня была такая же проблема, и я решил ее использовать, используя IntentsTestRule вместо ActivityTestRule . IntentsTestRule является подклассом ActivityTestRule . Настройте свой @Rule который создает такую ​​активность:

 @Rule public IntentsTestRule<MyActivity> mActivity = new IntentsTestRule<MyActivity>(MyActivity.class) { @Override protected Intent getActivityIntent() { ... } }; 

Используйте IntentsTestRule вместо ActivityTestRule при использовании Espresso-Intents. https://google.github.io/android-testing-support-library/docs/espresso/intents/index.html

Если вы используете настраиваемый ActivityTestRule , вы можете добавить соответствующие Intents.init(), Intents.release() :

 @Override protected void afterActivityLaunched() { Intents.init(); super.afterActivityLaunched(); } @Override protected void afterActivityFinished() { super.afterActivityFinished(); Intents.release(); }