2017-10-10 7 views
0

확인하는 것입니다 그 표시 나는이 onView(withId(R.id.start_app)).perform(click());어떻게하면 Espresso는 DialogFragment가 보이는지 확인한 다음 동작을 수행합니까? 특정 <code>DialogFragment</code>를 볼 수 있고 경우에 내가 원하는 무엇

같은 코드를 실행하려는 경우에만 지금 나는이 나는 경우 조건에서 사용하지 못할 코드. 이 방법에 두 코드는 Dialogfragment가 표시되는 경우에 관계없이 실행하거나

@Test 
public void testHowDoIBecomeCustomerButtonX() { 
    onView(withId(R.id.cancel_button)) 
      .inRoot(isDialog()) 
      .check(matches(isDisplayed())); 

    onView(withId(R.id.becoming_customer)).perform(click()); 
} 

답변

0

not.` 당신이 할 수있는 조건이있는 경우 만족 따라서를 떠나지 않을 예외를 throw try-catch로 조건을 포장입니다 것입니다 try 블록.

그것은이 같은 것을 볼 수 있었다 :

try { 
     onView(withId(R.id.cancel_button)).check(matches(isDisplayed())); 
     onView(withId(R.id.becoming_customer)).perform(click()); 
    } catch (NoMatchingViewException e) { 
    } 

cancel_button에 대한 첫 번째 검사가 두 번째 줄이 실행되지 실패합니다. 첫 번째 조건이 올바르게 평가되고 있는지 확인해야합니다.

는하지만 일반적으로 말하는 것은 bad pattern입니다. 어떤 종류의 해킹을 사용하지 않으면 이것이 불가능한 이유가 있습니다. 당신은 당신의 시험 조건을 전혀 피해야합니다! 하나의 테스트 케이스에서 대화 상자가 나타나고 테스트를 진행하고 두 번째 테스트에서는 나타나지 않고 계속 진행하는 두 개의 별도 테스트 케이스가있는 것이 훨씬 낫습니다.