Câu trả lời này dành cho những người mới bắt đầu thử nghiệm Android. Tôi sẽ cung cấp hai ví dụ đơn giản để giúp bạn xem cách thử nghiệm hoạt động. Nếu bạn theo dõi trong 10 phút tiếp theo, bạn sẽ được thiết lập để bắt đầu thêm các bài kiểm tra vào ứng dụng của riêng mình. Tôi nghĩ bạn sẽ ngạc nhiên vì nó dễ đến mức nào. Tôi chắc chắn là vậy.
Giới thiệu về thử nghiệm Android
Có hai loại kiểm tra khác nhau mà bạn sẽ thực hiện.
- Kiểm tra đơn vị địa phương. Chúng được chạy cục bộ trên JVM (Máy ảo Java). Vì họ là người địa phương, họ rất nhanh. Bạn có thể sử dụng chúng để kiểm tra các phần mã của bạn chỉ cần Java chứ không phải API Android. (Đôi khi bạn có thể tạo đối tượng API giả để thử nghiệm nhiều thứ hơn tại địa phương. Đây được gọi là mocking. Ví dụ:
Context
. Ví dụ:
- Thử nghiệm được kiểm tra. Các thử nghiệm này được chạy trên một thiết bị thực hoặc trong trình giả lập. Điều đó làm cho chúng chậm hơn so với các bài kiểm tra địa phương. Tuy nhiên, chúng linh hoạt hơn bởi vì bạn có sẵn API Android đầy đủ cho bạn.
Tạo dự án mới và bạn sẽ thấy các thư mục mặc định sau.
Mọi thứ đều đã ở đó và chờ đợi cho bạn để tạo ra các bài kiểm tra của bạn. Tất cả đã được thiết lập rồi!
Làm thế nào để tạo ra đơn vị địa phương kiểm tra
Mở ExampleUnitTest
tập tin hiển thị trong hình ở trên. nó sẽ giống như thế này:
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
}
}
Nhấn mũi tên màu xanh lá cây kép để chạy tất cả các thử nghiệm hoặc mũi tên màu xanh lá cây duy nhất để chạy chỉ một. (Trong trường hợp này chỉ có một bài kiểm tra để họ có cả hai làm điều tương tự.)
Nó phải vượt qua (miễn là 2 + 2
vẫn là 4
khi bạn đang đọc câu trả lời này). Xin chúc mừng, bạn vừa chạy thử nghiệm đầu tiên của mình!
Làm bài kiểm tra của riêng bạn
Hãy viết thử nghiệm của chúng ta. Đầu tiên thêm lớp này đến dự án ứng dụng chính của bạn để chúng tôi có một cái gì đó để kiểm tra:
public class MyClass {
public int add(int a, int b) {
return a + b;
}
}
Bây giờ thay đổi phương pháp addition_isCorrect()
trong lớp thử nghiệm để được giống như đoạn mã sau (hoặc chỉ cần thêm một phương pháp khác với một cái tên khác) :
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);
}
}
Chạy lại và bạn sẽ thấy nó vượt qua. Xin chúc mừng, bạn vừa tạo thử nghiệm đầu tiên của riêng mình! (Vâng, tôi đoán về mặt kỹ thuật nó là của tôi, nhưng, hey, gần đủ. Có gì tôi là của bạn.)
Làm thế nào để tạo ra các bài kiểm tra instrumented
Mở tệp ExampleInstrumentedTest
. nó sẽ trông giống như sau:
@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());
}
}
Nhấn lại một trong các nút màu xanh lục đó.
Chừng nào bạn có một thiết bị thực kết nối hoặc giả lập thiết lập, nó cần phải có bắt đầu nó lên và chạy ứng dụng của bạn. Xin chúc mừng, bạn vừa chạy thử nghiệm được thử nghiệm đầu tiên của mình!
Làm bài kiểm tra của riêng bạn
Các thử nghiệm instrumented sử dụng Espresso để chạy thử nghiệm. Nó giống như người dùng rô bốt nhỏ của riêng bạn mà bạn có thể thử nghiệm ứng dụng của mình. Bạn có thể yêu cầu nó làm một cái gì đó như nhấn một nút hoặc đọc các thuộc tính của một TextView.
Bạn có thể viết hướng dẫn về cách thực hiện kiểm tra bằng tay, nhưng vì chúng tôi mới bắt đầu, hãy sử dụng số auto-record function. Nó siêu đơn giản.
Trước tiên hãy thêm nút vào giao diện người dùng của bạn để chúng tôi có thứ gì đó phù hợp.Tôi đã làm điều này:
<?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>
Sau đó nhấn Run> Ghi Espresso Thử nghiệm trong menu.
Sau khi nó bắt đầu, nhấp vào nút trong giả lập và sau đó để kết thúc chọn OK trên hộp thoại Record. Nó sẽ tự động tạo ra mã kiểm tra sau.
@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());
}
}
Tuyệt vời! Bạn vừa mới tạo thử nghiệm đầu tiên cho bạn! Đó là siêu dễ dàng. Bạn có lẽ nên thêm một khẳng định để làm cho nó một thử nghiệm thực sự, nhưng đó là khá dễ dàng để làm với máy ghi âm, quá. Xem this video để đi sâu hơn một chút.
Nghiên cứu thêm
Tôi sẽ xem video trước và sau đó đọc qua tài liệu. Đó là tất cả khá hữu ích. Liên kết cuối cùng là một loạt các bài viết bao gồm một số điều quan trọng cần suy nghĩ về khi chọn những gì cần kiểm tra.
Tôi cũng đã cố gắng tạo dự án thử nghiệm. Nếu bạn làm điều đó với công cụ dòng lệnh Android giống như bạn làm với một dự án Eclipse, thì bạn sẽ gặp lỗi vì nó không thể tìm thấy tệp AndroidManifest.xml. Có vẻ như Google cần cập nhật công cụ Android của họ để xử lý các dự án Grundle. Tuy nhiên, tôi mới thử nghiệm trong Android nên tôi không thể giúp bạn = ( – Kage