수색…


통사론

  • Instrumentation getInstrumentation ()
  • UIDevice UiDevice.getInstance (Instrumentation instrumentation)
  • 부울 UIDevice.pressHome ()
  • boolean UIDevice.pressBack ()
  • boolean UIDevice.pressRecentApps ()
  • void UIDevice.wakeUp ()
  • 부울 UIDevice.swipe (int startX, int startY, int endX, int endY, int steps)
  • 부울 UIDevice.drag (int startX, int startY, int endX, int endY, int steps)
  • UIDbject2 UIDevice.findObject (By.desc (String contentDesc))
  • 부울 UIObject2.click ()

비고

UIAutomator는 특히 사용자 스토리를 테스트하는 데 적합합니다. 뷰 요소에 고유 한 resource-id 또는 content-desc 가없는 경우 문제가 발생합니다. 대부분의 경우 어쨌든 테스트를 완료하는 방법이 있습니다. 시간이 많이 걸립니다. 앱의 코드에 영향을 줄 수있는 경우 UIAutomator가 테스트 도구 일 수 있습니다.

프로젝트 준비 및 첫 번째 UIAutomator 테스트 작성

필요한 라이브러리를 Android 모듈의 build.gradle의 종속성 섹션에 추가합니다.

android {
...
  defaultConfig {
    ...
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  }
}

dependencies {
  ...
  androidTestCompile 'com.android.support.test:runner:0.5'
  androidTestCompile 'com.android.support.test:rules:0.5'
  androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2'
  androidTestCompile 'com.android.support:support-annotations:23.4.0'
}

물론 버전은 평균 시간이 다를 수 있습니다.

이후에 변경 사항과 동기화됩니다.

그런 다음 androidTest 폴더에 새 Java 클래스를 추가하십시오.

public class InterAppTest extends InstrumentationTestCase {

  private UiDevice device;

  @Override
  public void setUp() throws Exception {
     device = UiDevice.getInstance(getInstrumentation());
  }

  public void testPressHome() throws Exception {
    device.pressHome();
  }
}

클래스 탭을 마우스 오른쪽 버튼으로 클릭하고 "InterAppTest 실행"에서이 테스트를 실행합니다.

UIAutomatorViewer를 사용하여보다 복잡한 테스트 작성하기

보다 복잡한 UI 테스트를 작성하려면 UIAutomatorViewer 가 필요합니다. / tools / 에있는 도구 는 현재 표시된보기의 레이아웃을 포함하여 전체 화면 스크린 샷을 만듭니다. 표시되는 내용을 보려면 다음 그림을 참조하십시오.

여기에 이미지 설명을 입력하십시오.

UI 테스트의 경우 resource-id , content-desc 또는 뷰를 식별하고 테스트 내에서 사용하기위한 다른 것을 찾고 있습니다.

uiautomatorviewer 는 터미널을 통해 실행됩니다.

예를 들어 응용 프로그램 버튼을 클릭 한 다음 일부 응용 프로그램을 열고 주변을 스 와이프하려면 다음과 같이 테스트 메소드를 사용할 수 있습니다.

public void testOpenMyApp() throws Exception {
    // wake up your device
    device.wakeUp();

    // switch to launcher (hide the previous application, if some is opened)
    device.pressHome();

    // enter applications menu (timeout=200ms)
    device.wait(Until.hasObject(By.desc(("Apps"))), 200);
    UiObject2 appsButton = device.findObject(By.desc(("Apps")));
    assertNotNull(appsButton);
    appsButton.click();

    // enter some application (timeout=200ms)
    device.wait(Until.hasObject(By.desc(("MyApplication"))), 200);
    UiObject2 someAppIcon = device.findObject(By.desc(("MyApplication")));
    assertNotNull(someAppIcon);
    someAppIcon.click();

    // do a swipe (steps=20 is 0.1 sec.)
    device.swipe(200, 1200, 1300, 1200, 20);
    assertTrue(isSomeConditionTrue)
}

UIAutomator 테스트의 테스트 스위트 만들기

테스트 스위트와 함께 UIAutomator 테스트를 수행하는 것은 빠른 작업입니다.

package de.androidtest.myapplication;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)
@Suite.SuiteClasses({InterAppTest1.class, InterAppTest2.class})
public class AppTestSuite {}

오른쪽을 클릭하고 스위트를 실행하여 단일 테스트와 비슷한 방식으로 실행하십시오.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow