Пытаюсь запустить тесты на Android функций, но ничего не получается - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в тестировании и задаюсь вопросом, почему они продолжают терпеть неудачи. Я пытаюсь запустить тест, чтобы он нажимал на элемент в указанной позиции в recyclerview, но по какой-то причине он продолжает терпеть неудачу. Я думаю, это может быть связано с данными, которые не загружаются вовремя из firebase. вот тестовый класс для моего домашнего класса:

@RunWith(AndroidJUnit4.class)
public class HomeTest {
    @Rule
    public FragmentTestRule<?, Home> fragmentTestRule =
            FragmentTestRule.create(Home.class);

    @Test
    public void recyclerview1(){
        //First Test
        //Espresso.onView(withId(R.id.eventsPlace)).perform(RecyclerViewActions.actionOnItemAtPosition(0,click()));

        //Second Test
//        RecyclerView recyclerView = activity.getActivity().findViewById(R.id.eventsPlace);
//        int itemcount = recyclerView.getAdapter().getItemCount();
//        Espresso.onView(withId(R.id.eventsPlace)).perform(RecyclerViewActions.scrollToPosition(itemcount-1));

        //Third Test

        onView(ViewMatchers.withId(R.id.eventsPlace)).perform(RecyclerViewActions.actionOnItemAtPosition(0,click()));
        String  itemval  = "Mercedes";
        onView(withText(itemval)).check(matches(isDisplayed()));

    }
    @Test
    public void recyclerview2(){
        onView(withId(R.id.contactsView)).perform(RecyclerViewActions.actionOnItemAtPosition(0,click()));
    }
    @Test
    public void clickButton() throws Exception {
        onView(withId(R.id.eventsPlace))
                .perform(RecyclerViewActions.actionOnItemAtPosition(1, click()));


    }

}

Я даже не пробовал другие тесты, но тот, который я пытаюсь запустить в данный момент, - это clickButton (). вот stacktrace

androidx.test.espresso.PerformException: Error performing 'actionOnItemAtPosition performing ViewAction: single click on item at position: 1' on view 'with id: com.example.carcrashdetection:id/eventsPlace'.
at androidx.test.espresso.PerformException$Builder.build(PerformException.java:82)
at androidx.test.espresso.base.DefaultFailureHandler.getUserFriendlyError(DefaultFailureHandler.java:79)
at androidx.test.espresso.base.DefaultFailureHandler.handle(DefaultFailureHandler.java:51)
at androidx.test.espresso.ViewInteraction.waitForAndHandleInteractionResults(ViewInteraction.java:312)
at androidx.test.espresso.ViewInteraction.desugaredPerform(ViewInteraction.java:173)
at androidx.test.espresso.ViewInteraction.perform(ViewInteraction.java:114)
at com.example.carcrashdetection.HomeTest.clickButton(HomeTest.java:50)
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 androidx.test.rule.ActivityTestRule$ActivityStatement.evaluate(ActivityTestRule.java:527)
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$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 androidx.test.ext.junit.runners.AndroidJUnit4.run(AndroidJUnit4.java:104)
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 androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:392)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2379)
Caused by: java.lang.RuntimeException: Action will not be performed because the target view does not match one or more of the following constraints:
(is assignable from class: class androidx.recyclerview.widget.RecyclerView and is displayed on the screen to the user)
Target view: "RecyclerView{id=2131361919, res-name=eventsPlace, visibility=VISIBLE, width=1272, height=0, has-focus=false, has-focusable=true, has-window-focus=true, is-clickable=false, is-enabled=true, is-focused=false, is-focusable=true, is-layout-requested=false, is-selected=false, layout-params=androidx.constraintlayout.widget.ConstraintLayout$LayoutParams@2758423, tag=null, root-is-layout-requested=false, has-input-connection=false, x=84.0, y=210.0, child-count=0}"
at androidx.test.espresso.ViewInteraction.doPerform(ViewInteraction.java:245)
at androidx.test.espresso.ViewInteraction.access$100(ViewInteraction.java:63)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:153)
at androidx.test.espresso.ViewInteraction$1.call(ViewInteraction.java:150)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)

Есть предложения, почему? Как я уже сказал, я новичок в тестировании и хочу учиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...