KIỂM THỬ VÀ TRIỂN KHAI ỨNGDỤNG ANDROIDBài 6: Sử dụng Robolectric để kiểm thử ứng dụng Android... Tổng quan về Robolectric Robolectric là framework cho phép chạy các unit test trênJVM j
Trang 1KIỂM THỬ VÀ TRIỂN KHAI ỨNGDỤNG ANDROID
Bài 6: Sử dụng Robolectric
để kiểm thử ứng dụng
Android
Trang 2Nội dung bài học
Tổng quan về Robolectric
Cấu hình Robolectric
Khởi tạo thành phần khác
2
Trang 3Tổng quan về Robolectric
Robolectric là framework cho phép chạy các unit test trênJVM (java virtual machine)
Giả lập Android framework chứa trong file android.jar
Cho phép kiểm thử ứng dụng Android trong môi trườngtích hợp liên tục mà không cần cấu hình phức tạp
Trang 4Tổng quan về Robolectric
Robolectric hỗ trợ quản lý tài nguyên
Có thể sử dụng findViewById() để tìm kiếm view
Trang chủ của robolectric: http://robolectric.org
Robolectric dựa trên JUnit4 framework
Robolectric không phải test framework tích hợp
Trang 5Shadow object
Robolectric thay thế các lớp Android bằng các đối tượngshadow object
Nếu một phương thức được miêu tả bởi Robolectric,
phương thức sẽ được chuyển tiếp tới shadow object
Shadow object hoạt động tương tự như các đối tượng củaAndroid SDK
Nếu một đối tượng không được mô tả bởi shadow object,
sẽ trả lại giá trị mặc định, null hoặc 0
Trang 7DEM O
Cài đặt và cấu hình Robolectrict
Trang 8Cấu hình project Robolectric
Trang 9Test Annotation
@RunWith
@Config
Trang 10 Để chạy kiểm thử trong Robolectric, phải thông báo choJUnit bằng cách sử dụng annotation @RunWith trong lớpkiểm thử
Trang 11 Chỉ dẫn Robolectric cấu hình Android theo cách khác cholớp kiểm thử hoặc phương thức bất kỳ
Trang 12DEM O
Kiểm thử sử dụng Robolectric
Trang 14 Ví dụ ứng dụng khởi tạo drawable resource id choImageView như sau:
Trang 15 Android không cung cấp phương thức để truy cập tới
drawable resource id của ImageView
Sử dụng đối tượng ShadowImageView của Robolectric đểtruy cập drawable resource id
Trang 16DEMO
Trang 18System Properties
Cấu hình sử dụng các thuộc tính sau:
robolectric.strictI18n: thiết lập “true” để kích hoạt strict mode
i18n- robolectric.logging: gồm có các giá trị stdout, stderr
hoặc tên file
robolectric.offline (mới trong version 2.4): thiết lập true
để disable runtime fetching jars từ Maven
robolectric.dependency.dir (mới trong version 2.4): đốivới offline mode, xác định folder chứa runtime
dependency như Android jar
Trang 19Robolectric Config File và project.properties File
Bạn có thể thiết lập giá trị mặc định cho bất kỳ item nào
trong đối tượng Config bao gồm file thuộc tính đặc biệt
trong classpath
Tên file phải là org.robolectric.Config.properties và chứa một
số giá trị cấu hình ví dụ như sau:
manifest= /myapp/AndroidManifest.xml
shadows=my.package.ShadowFoo
Trang 20Robolectric Config File và project.properties File
Nếu project có chứa ApkLibs, phải thiết lập đúng với
Robolectric Khi đó phải sử dụng file project.properties đểkhai báo dependency cho Robolectric
target=android-<android API level to target>
android.library.reference.1=<relative path to first dependency>
android.library.reference.2=<relative path to second dependency>
Trang 21Khởi tạo các thành phần khác
Trong Android có thể dễ dàng khởi tạo service và activity thông qua tương tác người dùng
Robolectric không thể khởi tạo các thành phần này
Bạn chỉ có thể viết code để kiểm tra xem các thành phầnnày đã khởi tạo chưa
Trang 22Khởi tạo các thành phần khác
Ví dụ có activity layout như sau thể hiện màn hình welcome screen
Trang 23Khởi tạo các thành phần khác
Khi người dùng click vào button, sẽ di chuyển người dùngđến LoginActivity
Trang 24Khởi tạo các thành phần khác
Để kiểm tra, bạn có thể kiểm tra khi người dùng click vào
Login button, chúng ta sẽ khởi tạo intent phù hợp
Bởi vì Robolectric là unit testing framework, do đó
LoginActivity không thể được khởi tạo trong thực tế, do đó
ta kiểm tra xem WelcomeActivity có khởi tạo đúng content hay không
Kiểm tra Service tương tự như kiểm tra Activity bằng cách sửdụng phương thức getNextStartedService() trong
ShadowActivity
Trang 25Khởi tạo các thành phần khác
Trang 26DEMO