2016-09-11 4 views
0

에스프레소를 사용하여 문자열이 있는지 주장하고 싶습니다.Android 에스프레소 자동화로 임의 번호를 지정하는 중

문자열 고정 부분과 난수가 들어 있습니다 (예 : FR # 133, 133은 임의의 숫자 임). 어떻게 주장 할 수 있습니까? 테스트가 존재하지 않는 숫자 I는 고정 문자열 FR 번호 133 검사를 수행하는 코드 아래 시도

을 실패하면

  • 그것은 어떤 자리 숫자
  • 을 할 수있다.

    ViewInteraction textView = onView(
          allOf(withText("FR#133"), 
            childAtPosition(
              allOf(withId(R.id.toolbar_farmdetail), 
                childAtPosition(
                  IsInstanceOf.<View>instanceOf(android.widget.LinearLayout.class), 
                  0)), 
              1), 
            isDisplayed())); 
        textView.check(matches(withText("FR#133"))); 
    

답변

0

에스프레소 + UIAutomator는 에스프레소 혼자하는 많은 문제를 해결하는 데 도움이됩니다.

내 샘플 UiObject를 만들고 그 안에 텍스트를 어설 션하는 내 샘플 함수입니다.

public static boolean testNumberIDExists(String startString, UiDevice mDevice) 
{ 
    String text=""; 
    UiObject uio= mDevice.findObject(new UiSelector().textStartsWith(startString)); 
    try { 
     text= uio.getText(); 
    } catch (UiObjectNotFoundException e) { 
     e.printStackTrace(); 
     return false; 
    } 

    return Character.isDigit(text.charAt(text.length()-1)); 

} 
2

난 당신이 HamcrestMatchersregexp (정규 표현식)를 확인한다고 생각합니다.

첫 번째에 따르면 startsWith(charSequence), endsWith(charSequence), contains(charSequence)과 같은 많은 문자열 matcher가 Espresso과 완벽하게 일치합니다.

확인 : http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/Matchers.html

예 : http://www.leveluplunch.com/java/examples/hamcrest-text-matchers-junit-testing/

자습서 : textView.check(matches(withText(endsWith("133"))));

하지만 당신은 임의의 숫자를 사용하는 등, 가장 흥미로운 정규가 matchesPattern() 될 것입니다 : 예를 들어 http://qathread.blogspot.com/2014/01/discovering-espresso-for-android.html

.

정규식을 사용하여 문자열 끝에 숫자가있는 적절한 고정 부분이 포함되어 있는지 확인하십시오.

textView.check(matches(withText(matchesPattern("FR#133")))); 

에 코드를 단순화하기 위해 또한보십시오 :

textView.check (matchesPattern ("FR # 133 예를 들어 Regex: Check if string contains at least one digit

:

는 여기에 대처하는 방법을 예입니다 "));

희망이 있으면 도움이 될 것입니다.

관련 문제