Tải bản đầy đủ (.pdf) (27 trang)

Bài 6: Sử dụng Robolectric để kiểm thử ứng dụng Android

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (530.3 KB, 27 trang )

KIỂM THỬ VÀ TRIỂN KHAI ỨNG
DỤNG ANDROID
Bài 6: Sử dụng Robolectric
để kiểm thử ứng dụng
Android


Nộ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


Tổng quan về Robolectric
 Robolectric là framework cho phép chạy các unit test trên
JVM (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ường
tích hợp liên tục mà không cần cấu hình phức tạp


Tổ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:
 Robolectric dựa trên JUnit4 framework
 Robolectric không phải test framework tích hợp



Shadow object
 Robolectric thay thế các lớp Android bằng các đối tượng
shadow 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ủa
Android 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


Cài đặt Robolectric
 Cài đặt Robolectric đòi hỏi Robolectric và JUnit 4 Jars trong
classpath
 Bạn cài bổ sung android.jar trong thư mục cài đặt Android
SDK tới classpath của test project
 Tải robolectric-X.X.X-jar-with-dependencies.jar từ website
Robolectric from sonatype


O

DEM

Cài đặt và cấu hình Robolectrict


Cấu hình project Robolectric



Test Annotation
 @RunWith
 @Config


@RunWith
 Để chạy kiểm thử trong Robolectric, phải thông báo cho
JUnit bằng cách sử dụng annotation @RunWith trong lớp
kiểm thử


@Config
 Chỉ dẫn Robolectric cấu hình Android theo cách khác cho
lớp kiểm thử hoặc phương thức bất kỳ


O

DEM

Kiểm thử sử dụng Robolectric


Robolectric.shadowOf()
 Các lớp Android thi thoảng không cung cấp phương thức
truy cập trạng thái của đối tượng Android khi kiểm thử
 Phương thức Robolectric.shadowOf() cung cấp tham chiếu
tới shadow instance đại diện cho đối tượng Android



Robolectric.shadowOf()
 Ví dụ ứng dụng khởi tạo drawable resource id cho
ImageView như sau:


Robolectric.shadowOf()
 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


O

DEM


Cấu hình Robolectric
 Có nhiều cách để cấu hình Robolectric khi chạy chương
trình
 System Properties
 Robolectric Config File
 project.properties File


System 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 i18nstrict mode
 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): đối
với offline mode, xác định folder chứa runtime
dependency như Android jar


Robolectric 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


Robolectric 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=dependency>
 android.library.reference.2=dependency>


Khở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ần
này đã khởi tạo chưa


Khở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


Khở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


Khở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


Khởi tạo các thành phần khác



×