2012-11-01 2 views
0

EditText 및 Button 위짓 트가있는 활동이 있습니다. 버튼을 클릭하면 EditText가 비어 있거나 setResult()을 호출하여 값을이 활동을 시작한 다른 활동으로 다시 전송합니다.Android JUnit 클래스의 EditText 입력을 테스트하는 기본 방법

이 상호 작용이 작동하는지 확인하기 위해 간단한 단위 테스트를 작성하고 있습니다. 나는 동일한 테스트의 두 가지 버전이 있습니다 당신이 볼 수 있듯이

@UiThreadTest 
public void testOkButtonOnClickWithNumber() { 
    this.numberText.setText(Integer.toString(this.testNumber)); 
    Assert.assertTrue(this.okButton.performClick()); 
    Assert.assertTrue(this.activity.isFinishing()); 
} 

public void testOkButtonOnClickWithUserInputNumber() throws Throwable { 
    this.sendKeys(Integer.toString(this.testNumber)); 

    this.runTestOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      Assert.assertTrue(NumberFilterTest.this.okButton.performClick()); 
     } 
    }); 

    this.getInstrumentation().waitForIdle(new Runnable() { 
     @Override 
     public void run() { 
      Assert.assertTrue(NumberFilterTest.this.activity.isFinishing()); 
     } 
    }); 
} 

를 하나 개의 테스트는 단순히 글고 위젯에 setText()를 호출합니다. 다른 하나는 sendKeys()을 사용합니다. 테스트 중에이 두 가지 옵션 중 가장 좋은 방법이 있습니까? 아니면 두 가지 테스트를 모두 진행해야합니까?

답변

2

adt21의 일부로 방금 출시 된 http://developer.android.com/tools/testing/testing_ui.html에 대한 새로운 대답이 나올 수 있습니다. 안드로이드 테스트를 시작한 사람이라면이 문제를 조사 할 가치가 있습니다.

실제 질문은 sendKeys()를 사용하는 것은 사용자가 실제로하는 것과 더 가깝습니다. 따라서 텍스트 또는 키 누르기 편집에 대한 청취자가 있다면 실제로 해고 당할 것입니다. 일반적으로이 기능을 사용하지 않을 수도 있으므로 문제가되지 않을 수도 있지만 사용자가 모르는 경우 물지 수도 있습니다. 이와 같은 또 다른 예는 버튼을 클릭하는 방법입니다. 사용자가 실제로 수행하는 버튼이기 때문에 버튼 방식으로 터치 이벤트를 보내는 것이 선호되는 방식 일 때 현재 클릭 방식을 호출하고 있습니다.

+0

감사합니다. 나는 그것을 확실히 체크 아웃 할 것이다. 나는 아직도 나의 원래 질문에 대한보다 직접적인 대답에 관심이있다. –