2010-01-12 37 views
21

Android cung cấp các gói khác nhau để thử nghiệm nhưSử dụng thử nghiệm Khung Android

AndroidTestCase ApplicationTestCase InstrumentationTestCase ActivityInstrumentationTestCase2 ActivityTestCase

tôi cần phải biết làm thế nào để quyết định gói phù hợp tốt nhất để thử nghiệm ứng dụng của tôi. Một số thông tin được cung cấp trong liên kết này

http: //developer.android.com/reference/android/test/package-summary.html

Nhưng tôi cần phải rõ ràng hơn về vấn đề này ...

Trả lời

46

TestCase - Plain cũ test JUnit. Nó có thể được mở rộng để kiểm tra các lớp tiện ích không gắn với khung công tác Android.

AndroidTestCase - Nó mở rộng JUnit của TestCase. Đây là lớp kiểm tra nhẹ hơn so với ActivityTestCase. Không cần phải khởi chạy một hoạt động để chạy nó. Phương thức get2ext16() của nó cho phép bạn nhận được ngữ cảnh được tiêm nếu bạn cần. Vì bạn có thể nhận được ngữ cảnh từ lớp này, bạn có thể thổi phồng các đối tượng giao diện người dùng của mình để kiểm tra hành vi của chúng.

ActivityInstrumentationTestCase2 - Đó là phiên bản mới hơn của ActivityInstrumentationTestCase. ActivityInstrumentationTestCase không được dùng nữa trong Android SDK 1.5. Đó là một lớp thử nghiệm nặng hơn so với AndroidTestCase. Nó cung cấp giao diện người dùng và thử nghiệm chức năng cho một hoạt động đơn lẻ. Bạn có thể nhận được một hoạt động tiêm mà bạn đang thử nghiệm bằng cách gọi phương thức getActivity() của nó. Hoạt động đang được thử nghiệm được khởi chạy và kết thúc trước và sau mỗi lần kiểm tra.

ActivityUnitTestCase - Nó cung cấp cho hoạt động thử nghiệm một môi trường bị cô lập. Khi sử dụng nó để kiểm tra hoạt động , hoạt động không được đính kèm vào hệ thống. Điều này sẽ cho bạn nhiều hơn kiểm soát những gì loại môi trường mà bạn muốn hoạt động của bạn được thử nghiệm trong

ApplicationTestCase -. Nó cung cấp thử nghiệm cho các lớp Application. Nó có thể được sử dụng để kiểm tra vòng đời của một ứng dụng.

InstrumentationTestRunner - Á hậu chạy thử nghiệm Android trường hợp.

Tôi chỉ tìm thấy điều này .. Hy vọng điều này sẽ giúp cho người khác ... Nếu bạn muốn biết thêm chi tiết như khi nào và cách sử dụng, hãy xem ứng dụng thử nghiệm APIDemos trong thư mục mẫu trong SDK Android.

+4

gì về InstrumentationTestCase? – Zorb

+0

ActivityUnitTestCase không thể trợ giúp thêm cho API24 – sunnyleevip

1

Tôi tìm thấy this tutorial từ droidcon 09 thực sự mang tính thông tin. Hoàn thành với các ví dụ về mã nguồn làm việc có thể tải xuống.

Chỉnh sửa: Liên kết dường như đã chết, như được nêu trong các nhận xét.

Nó đi qua việc tạo thử nghiệm chuyển đổi nhiệt độ Celcius sang Fahrenheit bằng cách sử dụng ActivityInstrumentationTestCase2, TestCase và AndroidTestCase.

+0

Liên kết tới hướng dẫn không hợp lệ nữa. – powder366

8

Vui lòng xem biểu đồ phân cấp lớp được vẽ bởi chính tôi bằng PowerPoint.

Câu trả lời được chấp nhận cung cấp đủ thông tin bằng lời. Tôi chỉ để làm cho nó rõ ràng bằng cách sử dụng đồ thị :)

Đối với InstrumentationTestCase @Zorb hỏi, đó là lớp cha mẹ cho ActivityTestCase trong số những người khác. Nó cho phép bạn gọi phương thức getInstrumentation để có được một thể hiện thiết bị để bạn có thể vận hành ứng dụng, hoạt động, v.v.

Class hierarchy graph drawn by myself

2

INTRO

Để làm rõ câu hỏi của bạn và đặt vào một chổ các lớp bạn đang yêu cầu, nó là điều cần thiết trước khi chia thử nghiệm trong hai loại. kiểm tra JUnit (về mặt lý thuyết đồng bằng Java) và Instrumentation kiểm tra (đó cũng là một phần của gói thử nghiệm JUnit nhưng cho phép bạn kiểm tra nhiều chức năng liên quan đến Android SDK).

Kiểm tra JUnit truyền thống cô lập một phần mã và chạy thử nghiệm. Kiểm tra thiết bị đo lường truy cập thay vì nhiều hơn bao gồm các thành phần Android. NHƯNG C THENG NHỮNG THỬ NGHIỆM CỐ ĐỊNH DERIVE TỪ GÓI JUNIT mặc dù chúng được khởi tạo trong hệ thống ngay cả trước khi bất kỳ mã ứng dụng nào được chạy và điều này giải thích tại sao chậm hơn, hơn nữa chúng cần một trình mô phỏng hoặc điện thoại chạy ứng dụng bạn đang thử nghiệm được thực hiện.

(Theo in đậm tất cả các lớp bạn đề cập, nhưng có những người khác thậm chí còn được sử dụng nhiều hơn mà tôi sẽ viết mà không có không có ký tự in đậm).

**** ĐẦU PHẦN ** (kiểm tra Junit) **

A) kiểm tra Junit rằng mở rộng TextCase (thường nhanh hơn so với Instrumentation, và kết hợp tốt với framweworks Mock)

AndroidTestCase: Nó cho phép truy cập vào bối cảnh hoạt động bạn đang thử nghiệm và tài nguyên của chúng, đó là lớp cơ sở mở rộng các lớp con chuyên biệt hơn, nó là lý tưởng để truy cập cơ sở dữ liệu, dữ liệu hệ thống tệp. Bạn có thể dễ dàng gọi getContext() và truy cập vào Tài nguyên mà không cần thiết lập một liên hệ trực tiếp với các Hoạt động như với các bài kiểm tra Instrumentation.

ApplicationTestCase kiểm soát môi trường nơi bạn nhắn tin cho ứng dụng, chủ yếu là bối cảnh và vòng đời. Các phần mở rộng thực sự hữu ích khác của AndroidTestCase cho phép bạn kiểm soát các Trình tải, Dịch vụ và Nhà cung cấp Nội dung, nhưng vì một số lý do vẫn không phải bất kỳ bộ thu phát nào mà bạn có thể gọi nó [gián tiếp] [1] bằng phương thức InstrumentationRegistry.getTargetContext() và sau đó instantiating BroadCastReceiver . Ngoài ra nó là thực sự phổ biến để sử dụng khung Mock khác nhau với Junit đó là thường nhanh hơn so với InstrumentationTests

-.¸-.-.-.-.-.-.-.--

**** THỨ HAI PHẦN ** (kiểm tra Instrumentation) **

B)kiểm tra đo lường, rằng mở rộng TestCase đang xem xét kiểm tra chức năng, tập trung nhiều hơn để bảo đảm rằng họ làm việc tốt với phía người dùng, Xem một phần của MVC . Họ thường chậm hơn so với loại được đề cập khác

InstrumentationTestCase là một lớp cơ sở hữu ích để gửi các sự kiện quan trọng để giao diện người dùng để mô phỏng các phím bàn phím QWERTY hoặc nút DPAD, cũng nó sẽ khởi động Hoạt động đó phải được kiểm tra, và thậm chí Intents

ActivityTestCase thường là không được sử dụng một mình, nó chỉ có mã chung cho các lớp con, nhưng trong trường hợp bạn không hài lòng bởi 3 lớp thừa hưởng từ lớp này (xem bên dưới) như một thành phần tương lai mới, bạn có thể sử dụng nó theo thời gian sẽ không tồn tại Lớp TestCase chuyên dụng.

ActivityInstrumentationTestCase2 là lớp Instrumentation được sử dụng nhiều nhất để viết các kiểm tra chức năng, từ hàm tạo được gọi là cá thể của Activity để kiểm tra. Về cơ bản bạn gọi hoạt động với getActivity() và bạn có thể chạy một cách pratically bất kỳ phương thức nào của Activity đó.

ActivityInstrumentationTestCase, bị phản đối, và ActivityUnitTestCase rằng mặc dù là dưới Instrumentation là tương tự như một bài kiểm tra đơn vị

+1

Tôi tìm thấy câu trả lời hữu ích này. Quá xấu mà những người "muộn đến bữa tiệc" hiếm khi được thăng chức! –

+0

cảm ơn sự đánh giá cao của bạn Robert, không bao giờ quan tâm vấn đề là cộng đồng mà muốn biết cuộn nhiều hơn một chút có thể có lợi. Danh tiếng là tương đối và viết các bài viết có cấu trúc giúp tác giả tìm hiểu – trocchietto

Các vấn đề liên quan