Khung thử nghiệm Espresso - Máy ghi thử nghiệm
Viết trường hợp thử nghiệm là một công việc tẻ nhạt. Mặc dù espresso cung cấp API rất dễ dàng và linh hoạt, việc viết các trường hợp thử nghiệm có thể là một công việc lười biếng và tốn thời gian. Để khắc phục điều này, Android studio cung cấp tính năng ghi và tạo các trường hợp kiểm tra espresso. Ghi lại Thử nghiệm Espresso có sẵn trong menu Chạy .
Hãy để chúng tôi ghi lại một trường hợp thử nghiệm đơn giản trong HelloWorldApp của chúng tôi bằng cách làm theo các bước được mô tả bên dưới,
Mở studio Android, sau đó là ứng dụng HelloWorldApp .
Nhấp vào Chạy → Ghi thử Espresso và chọn MainActivity .
Ảnh chụp màn hình Máy ghi như sau,
Nhấp vào Thêm xác nhận . Nó sẽ mở ra màn hình ứng dụng như hình dưới đây,
Nhấp vào Hello World! . Các ghi màn hình để Chọn xem văn bản là như sau,
Một lần nữa nhấp vào Lưu xác nhận Thao tác này sẽ lưu xác nhận và hiển thị nó như sau,
Bấm OK . Nó sẽ mở ra một cửa sổ mới và hỏi tên của test case. Tên mặc định là MainActivityTest
Thay đổi tên trường hợp thử nghiệm, nếu cần.
Một lần nữa, nhấp vào OK . Thao tác này sẽ tạo một tệp, MainActivityTest với trường hợp thử nghiệm đã ghi của chúng tôi. Mã hóa hoàn chỉnh như sau,
package com.tutorialspoint.espressosamples.helloworldapp;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import androidx.test.espresso.ViewInteraction;
import androidx.test.filters.LargeTest;
import androidx.test.rule.ActivityTestRule;
import androidx.test.runner.AndroidJUnit4;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static org.hamcrest.Matchers.allOf;
@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);
@Test
public void mainActivityTest() {
ViewInteraction textView = onView(
allOf(withId(R.id.textView_hello), withText("Hello World!"),
childAtPosition(childAtPosition(withId(android.R.id.content),
0),0),isDisplayed()));
textView.check(matches(withText("Hello World!")));
}
private static Matcher<View> childAtPosition(
final Matcher<View> parentMatcher, final int position) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("Child at position " + position + " in parent ");
parentMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
ViewParent parent = view.getParent();
return parent instanceof ViewGroup &&
parentMatcher.matches(parent)&& view.equals(((ViewGroup)
parent).getChildAt(position));
}
};
}
}
Cuối cùng, chạy thử nghiệm bằng menu ngữ cảnh và kiểm tra xem trường hợp thử nghiệm có chạy hay không.