이 답변은 Android 테스트를 막 시작하는 사람들을위한 것입니다. 테스트가 어떻게 작동하는지 확인하는 데 도움이되는 두 가지 간단한 예를 제공하겠습니다. 다음 10 분 동안 계속 진행하면 자신의 앱에 테스트를 추가 할 준비가 된 것입니다. 얼마나 쉬운 지 놀랄 것입니다. 나는 확실히했다.
Android 테스트 소개
수행 할 테스트에는 두 가지 유형이 있습니다.
- 로컬 단위 테스트. 이는 JVM (Java Virtual Machine)에서 로컬로 실행됩니다. 그들은 현지이기 때문에 빠릅니다. 이를 사용하여 Android API가 아닌 Java 만 필요한 코드 부분을 테스트 할 수 있습니다. (때때로 로컬에서 더 많은 것을 테스트하기 위해 가짜 API 객체를 만들 수 있습니다. 이것을 mocking 이라고합니다 . mock
Context
이 예시입니다.)
- 계측 테스트. 이러한 테스트는 실제 기기 또는 에뮬레이터에서 실행됩니다. 그것은 로컬 테스트보다 느리게 만듭니다. 그러나 전체 Android API를 사용할 수 있기 때문에 더 유연합니다.
새 프로젝트를 생성하면 다음과 같은 기본 폴더가 표시됩니다.
모든 것이 이미 거기에 있으며 테스트를 만들기를 기다리고 있습니다. 이미 모든 설정이 완료되었습니다!
로컬 단위 테스트를 만드는 방법
ExampleUnitTest
위 이미지에 표시된 파일을 엽니 다 . 다음과 같이 보일 것입니다.
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
모든 테스트를 실행하려면 이중 녹색 화살표를 누르고 하나만 실행하려면 단일 녹색 화살표를 누릅니다. (이 경우 하나의 테스트 만 있으므로 둘 다 동일한 작업을 수행합니다.)
통과해야합니다 ( 이 답변을 읽을 때 2 + 2
여전히있는 한 4
). 축하합니다. 첫 번째 테스트를 실행했습니다!
나만의 테스트 만들기
우리 자신의 테스트를 작성합시다. 먼저 테스트 할 내용이 있도록이 클래스를 기본 앱 프로젝트에 추가합니다.
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
이제 addition_isCorrect()
테스트 클래스 의 메서드를 다음 코드와 같이 변경 하거나 다른 이름을 가진 다른 메서드를 추가합니다.
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
MyClass myClass = new MyClass();
int result = myClass.add(2, 2);
int expected = 4;
assertEquals(expected, result);
}
}
다시 실행하면 통과하는 것을 볼 수 있습니다. 축하합니다. 첫 번째 테스트를 만들었습니다! (글쎄요, 기술적으로는 제 것이었지만, 충분히 가까워요. 제 것은 당신 것입니다.)
계측 테스트를 만드는 방법
ExampleInstrumentedTest
파일을 엽니 다 . 다음과 같이 보일 것입니다.
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.myapp", appContext.getPackageName());
}
}
녹색 버튼 중 하나를 다시 누르십시오.
실제 장치가 연결되어 있거나 에뮬레이터가 설정되어있는 한, 장치를 시작하고 앱을 실행해야합니다. 축하합니다. 첫 번째 계측 테스트를 실행했습니다!
나만의 테스트 만들기
계측 테스트는 Espresso 를 사용 하여 테스트를 실행합니다. 앱을 테스트 할 수있는 작은 로봇 사용자와 비슷합니다. 버튼을 누르거나 TextView의 속성을 읽는 것과 같은 작업을 수행하도록 지시 할 수 있습니다.
직접 테스트하는 방법에 대한 지침을 작성할 수 있지만 이제 막 시작 했으므로 자동 기록 기능을 사용하겠습니다 . 아주 간단합니다.
먼저 UI에 버튼을 추가하여 작업 할 수 있도록합니다. 나는 이걸했다:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapp.MainActivity">
<Button
android:id="@+id/myButton"
android:text="Click me"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</android.support.constraint.ConstraintLayout>
그런 다음 메뉴에서 Run> Record Espresso Test 를 누릅니다.
시작 후 에뮬레이터에서 버튼을 클릭 한 다음 완료하려면 Record 대화 상자에서 OK를 선택합니다. 다음 테스트 코드가 자동으로 생성됩니다.
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction appCompatButton = onView(
allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
appCompatButton.perform(click());
}
}
큰! 방금 첫 번째 계측 테스트를 만들었습니다! 매우 쉬웠습니다. 실제 테스트로 만들려면 어설 션을 추가해야 할 것입니다.하지만 그것은 레코더로도 쉽게 할 수 있습니다. 시계 동영상을 좀 더 깊이 이동합니다.
추가 연구
먼저 비디오를 본 다음 설명서를 읽었습니다. 모두 매우 도움이됩니다. 마지막 링크는 테스트 할 항목을 선택할 때 고려해야 할 몇 가지 중요한 사항을 다루는 기사 시리즈입니다.