Tôi có một bài kiểm tra đơn giản hôm nay:Có cách nào để chạy thử Espresso với nhiều phương pháp thử nhưng chỉ có một phương pháp thiết lập?
@RunWith(AndroidJUnit4.class)
@LargeTest
public class WhenNavigatingToUsersView {
@Rule
public ActivityTestRule<MainActivity> mActivityRule =
new ActivityTestRule(MainActivity.class);
private MainActivity mainActivity;
@Before
public void setActivity() {
mainActivity = mActivityRule.getActivity();
onView(allOf(withId(R.id.icon), hasSibling(withText(R.string.users)))).perform(click());
}
@Test
public void thenCorrectViewTitleShouldBeShown() {
onView(withText("This is the Users Activity.")).check(matches(isDisplayed()));
}
@Test
public void thenCorrectUserShouldBeShown() {
onView(withText("Donald Duck (1331)")).check(matches(isDisplayed()));
}
}
Nhưng đối với tất cả các phương pháp thử nghiệm các setActivity
được điều hành, trong đó, nếu bạn có 10-15 phương pháp, cuối cùng sẽ tiêu thụ (nếu bạn có nhiều thời gian số lượt xem).
@BeforeClass
dường như không hoạt động vì nó phải là tĩnh và do đó buộc ActivityTestRule
cũng phải tĩnh.
Vì vậy, có cách nào khác để thực hiện việc này không? Thay vì có nhiều xác nhận trong cùng một phương pháp thử nghiệm?
Bạn thiếu điểm của tôi ... Có cách nào không phải xác định tương tác xem cho mọi phương pháp thử nghiệm không? Một bài kiểm tra đơn vị tốt cho tôi là một phương pháp thử nghiệm chỉ nên có một khẳng định cho mỗi bài kiểm tra và thiết lập được thực hiện theo phương pháp khác. Xem xét chế độ xem này sẽ có đầy đủ các trường tôi muốn xác minh nếu chúng tồn tại, sẽ rất tốn kém để tương tác với chế độ xem cho mọi thử nghiệm. Khi tôi chỉ muốn "mở" chế độ xem đó một lần và thực hiện nhiều thử nghiệm. – peuhse
Tại sao tôi không nên xem tương tác và các nội dung khác trong setActivity? Một tên tốt hơn sẽ là setupContext hoặc một cái gì đó và thêm tất cả các điều kiện tiên quyết để thử nghiệm ở đó. Đó là ý định của từ khóa @Before trong junit ... – peuhse