AndroidX Test Espresso 3.1.1, Runner 1.1.1, Rules 1.1.1, Monitor 1.1.1 AndroidTestOrchestrator 1.1.1, Core 1.1.0, Truth 1.1.0, JUnit 1.1.0 (13/12/2018)
Đây là bản phát hành ổn định của AndroidX Test 1.1.0
- Core
- Làm cho ActivityScenario hỗ trợ các hoạt động bắt đầu một hoạt động mới.
AndroidX Test Espresso 3.1.1-beta01, Runner 1.1.1-beta01, Rules 1.1.1-beta01, Monitor 1.1.1-beta01 AndroidTestOrchestrator 1.1.1-beta01, Core 1.1.0-beta01 Truth 1.1.0-beta01, JUnit 1.1.0-beta01 (6/12/2018)
- Core
- Cấu phần phần mềm tiện ích kotlin core-ktx mới! Bao gồm một ActivityScenario.launchActivity API thân thiện với kotlin
- ActivityScenario API mới để khởi chạy các đối tượng có ý định tuỳ chỉnh
- ActivityScenario API mới để nhận kết quả Activity (Hoạt động)
- Cho phép ActivityScenario có thể đóng.
- Espresso
- Sửa đổi withResourceNameMatcher và HumanReadables để tương thích với API 28.
- Cập nhật phần mô tả của ReplaceTextAction để thêm stringToBeSet
- Hỗ trợ Espresso trong chế độ lặp lại bị tạm dừng Robolectric.
- JUnit
- ActivityScenarioRule API mới để tự động chạy và đóng một Hoạt động trong khi thiết lập và đóng kiểm thử.
- Cấu phần phần mềm tiện ích kotlin junit-ktx mới! Bao gồm một ActivityScenarioRule API thân thiện với kotlin
- Runner
- Tạo -e package và -e testFile nhất quán với hành vi nhận gói.
- Truth
- Thêm các API bool, parcelable, và parcelableAsType BundleSubject
AndroidX Test Espresso 3.1.0, Runner 1.1.0, Rules 1.1.0, Monitor 1.1.0 AndroidTestOrchestrator 1.1.0, Core 1.0.0 Truth 1.0.0, JUnit 1.0.0 (24/10/2018)
- Tất cả
- Đặt minSdkVersion thành 14 và targetSdkVersion thành 28
- Espresso
- Khắc phục vấn đề withContentDescription kết hợp với các kiểu không phải chuỗi
- Thêm hỗ trợ cho việc sử dụng Espresso trên Robolectric
- Vấn đề 72798625: Espresso ViewMatchers.withText không hoạt động khi textAllCaps được bật
- Thêm hỗ trợ chèn một chuỗi sự kiện chuyển động
- Ý định
- Thêm beta API để truy xuất danh sách ý định (intent). Dành để sử dụng cùng với các nhận định sự thật (truth)
- Runner
- Hỗ trợ ứng dụng tức thì
- Ngừng sử dụng androidx.test.runner.AndroidJUnit4 và thay thế bằng androidx.test.ext.junit.runners.AndroidJUnit4
- Giám sát
- Ngừng sử dụng androidx.test.InstrumentationRegistry và thay thế bằng androidx.test.platform.app.InstrumentationRegistry và androidx.test.core.app.ApplicationProvider
- AndroidTestOrchestrator
- Chỉ cho phép xử lý độ bao phủ của trình điều phối nếu cả hai đối số "coverage" và "coverageFilePath" được truyền.
- Chỉ đợi trình gỡ lỗi khi việc gỡ lỗi được thiết lập nhưng không dùng để liệt kê các trường hợp kiểm thử ATO. Thêm một cờ orchestratorDebug mới để tự gỡ lỗi trình điều phối
- Core
- Cấu phần phần mềm mới! Bao gồm các API mới hỗ trợ các kiểm thử cục bộ và kiểm thử trên thiết bị cho:
- Truy xuất ngữ cảnh: ApplicationProvider
- Kiểm soát vòng đời hoạt động: ActivityScenario(beta)
- Trình tạo cho MotionEvent, PackageInfo
- Lớp tiện ích Parceables
- Cấu phần phần mềm mới! Bao gồm các API mới hỗ trợ các kiểm thử cục bộ và kiểm thử trên thiết bị cho:
- Truth
- Cấu phần phần mềm mới! Bao gồm các chủ thể truth tuỳ chỉnh cho Notification, Intent, Bundle, Parcelable và MotionEvent
- JUnit
- Cấu phần phần mềm mới! Bao gồm lớp runner JUnit androidx.test.ext.junit.runners.AndroidJUnit4 hỗ trợ kiểm thử cục bộ và kiểm thử trên thiết bị.
Espresso 3.0.2-beta1, Runner 1.0.2-beta1, Rules 1.0.2-beta1, Monitor 1.0.2-beta1, AndroidTestOrchestrator 1.0.2-beta1 (16/4/2018)
- Espresso
- Thay đổi API có thể gây lỗi:
- Chúng tôi nhận thấy trong Vấn đề 64062890 chúng tôi sử dụng Guava tuỳ chọn trong API công khai. Đây là hành vi giám sát rất tệ của chúng tôi. Do đó gây ra một thay đổi API công khai có thể gây lỗi trong bản phát hành này. Chúng tôi đã giới thiệu một trình bao xấu xí xung quanh lớp Tuỳ chọn Guava, có tên là EspressoOptional nằm trong không gian tên "android.support.test.espresso.util". Nhà phát triển đang sử dụng Guava Optional API bị rò rỉ này cần thay đổi dữ liệu đầu vào và tham chiếu để sử dụng EspressoOptional khi cập nhật lên phiên bản mới này. Chúng tôi xin lỗi cho sự bất tiện này.
- API onView() và onData() nay được đánh dấu là @CheckReturnValue để ngăn chặn lỗi
- Khắc phục sao cho tệp espresso-core POM không kéo vào phần phụ thuộc "rules" ("quy tắc"). Thay vào đó, hãy dùng espresso-intents POM để kéo. Đây là một thay đổi NoOp dành cho các nhà phát triển vì các espresso-intents không thể được sử dụng nếu không có espresso-core.
- Vấn đề 65486414: Espresso thiếu phần phụ thuộc guava
- Vấn đề 65576174: Espresso IdlingResourceRegistry.sync khiến lần kiểm thử thứ hai không thành công
- Vấn đề 65568629: Espresso.onIdle không sử dụng IdlingRegistry
- Vấn đề 69333598: espresso 3.0.1 không tương thích với play-services-auth:11.6.0 trong mô-đun thư viện Android.
- Vấn đề 64062890: Loại tuỳ chọn nội bộ được thể hiện bởi giao diện của AdapterViewProtocol
- Vấn đề 64091847: Espresso 3.0.0 KHÔNG nên phụ thuộc vào runner kiểm thử
- Vấn đề 73722050: espresso-contrib 3.0.2-alpha1 đóng gói các lớp android.arch.{lifecycle/core}
- Thay đổi API có thể gây lỗi:
- Espresso-remote
- Đây là cấu phần phần mềm hoàn toàn mới. Chúng tôi đã tách biệt mọi chức năng đa quy trình của Espresso bên ngoài cấu phần phần mềm espresso-core. Việc này giúp giảm đáng kể kích thước tổng thể cũng như số lượng phương thức của espresso-core
- Runner
- Rút ngắn truy vết ngăn xếp nếu việc này quá lớn đối với một giao dịch liên kết. Vì AJUR cần báo cáo lỗi cho SA thông qua một IPC liên kết, nên chúng tôi cần đảm bảo không vượt quá giới hạn giao dịch Binder – tương đương với 1MB cho mỗi quy trình.
- Vấn đề 65828576:TestRequestBuilder gặp sự cố khi chạy kiểm thử trong cùng lớp với @Ignore
- Vấn đề 37057596: Chúng tôi không xử lý các lỗi trong @BeforeClass
- Quy tắc
- Đảm bảo phát hành tệp tham chiếu đến hoạt động đang được kiểm thử sau các thay đổi của vòng đời. Trong thời gian kiểm thử, giờ đây, bạn có thể thao tác trực tiếp Hoạt động bằng cách sử dụng tệp đối chiếu thu được từ #getActivity(). Nếu Hoạt động đã kết thúc và được chạy lại, thì tệp đối chiếu mà #getActivity() trả về sẽ luôn trỏ đến phiên bản hiện tại của Hoạt động.
- Vấn đề 64389280: GrantPermissionRules không cung cấp WRITE_EXTERNAL_STORAGE
- Vấn đề 37065965: ActivityTestRule rò rỉ hoạt động sau khi thay đổi hướng
- Vấn đề 75254050: ActivityTestRule không cập nhật phiên bản của Hoạt động trong các thay đổi cấu hình
- Vấn đề 64464625: Không thể thực hiện công việc của giao diện người dùng trong phương thức finish() của Hoạt động
- AndroidTestOrchestrator
- Truyền cờ
-e coverage true -e coverageFilePath /sdcard/foo/
để tạo các tệp xác định độ phủ với vị trí đã cho (Ứng dụng phải có quyền ghi vào vị trí đã cho). Quy ước đặt tên tệp xác định độ phủ giống nhưcom.foo.Class#method1.ec
này. Lưu ý rằng tính năng này chỉ được hỗ trợ khi chạy ở chế độ cô lập. Ngoài ra, bạn không thể sử dụng cùng với cờcoverageFile
của AndroidJUnitRunner. Vì các tệp xác định độ phủ được tạo sẽ ghi đè lên nhau. - Truyền cờ
-e clearPackageData
nếu bạn muốn trình điều phối (orchestrator) chạy lệnhpm clear context.getPackageName()
vàpm clear targetContext.getPackageName()
ở giữa các lệnh gọi thử. Lưu ý: ngữ cảnh trong câu lệnh xoá là Ứng dụng trong ngữ cảnh kiểm thử. - Khắc phục – Khi chạy một kiểm thử rỗng, hay còn gọi là không @Test trong mục tiêu, kết quả kiểm thử sẽ khác với chế độ cũ.
- Vấn đề 72758547: Trình điều phối (Orchestrator) kiểm thử khiến cho Dữ liệu về độ bao phủ Jacoco không được hoàn thiện, chỉ chứa dữ liệu ở lần chạy kiểm thử gần nhất.
- Vấn đề 67916042: Android Test Orchestrator : Việc triển khai bị dừng khi Quá trình gặp sự cố do OutOfMemory
- Vấn đề 77752735: Trình điều phối gặp sự cố do TransactionTooLargeException
- Vấn đề 77549481: Trình điều phối kiểm thử nên chạy "pm clear" sau mỗi lần kiểm thử
- Truyền cờ
Espresso 3.0.2-alpha1, Runner 1.0.2-alpha1, Rules 1.0.2-alpha1, AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)
Espresso
Intents
hiện có một phản hồi có thể gọi, cho phép thực thi các kiểm thử sau khi nhận được ý định kích hoạt nhưng trước khi trả về một đối tượngInstrumentation.ActivityResult
.
Runner
Phân tách cấu phần phần mềm giám sát maven
com.android.support.test:monitor:<version>
, dành cho người dùng cầnMonitoringInstrumentation
không kèm chạy kiểm thử và các tính năng của JUnit.Nếu bạn sử dụng
com.android.support.test:runner:<version>
, mọi tính năng sẽ hoạt động như dự kiến vì Gradle sẽ tự động lấy mô-đunmonitor
làm một phần phụ thuộc của mô-đunrunner
.Thêm cờ
newRunListenerOrderMode
. Khitrue
, trình lắng nghe người dùng xác định sẽ chạy trước trình lắng nghe mặc định. (Chúng tôi kỳ vọng hành vi này sẽ trở thành mặc định.)Vấn đề 65828576:
TestRequestBuilder
gặp sự cố khi chạy các kiểm thử trong một lớp được chú thích bằng@Ignore
(không gồm chạy kiểm thử hoặc các tính năng của JUnit).
AndroidTestOrchestrator
- Nay xử lý các kiểm thử rỗng theo cách tương tự như
AndroidJUnitRunner
. - Trình điều phối nay có thể xử lý dữ liệu đầu ra tiêu chuẩn rất lớn trên
AndroidJUnitRunner
.
- Nay xử lý các kiểm thử rỗng theo cách tương tự như
Espresso 3.0.1, Runner 1.0.1, Rules 1.0.1, AndroidTestOrchestrator 1.0.1 (28/8/2017)
Espresso
- Thêm tuỳ chọn
IdlingPolicy
để ngăn chặnonTimeout()
khi trình gỡ lỗi bước được đính kèm với máy ảo. - Các vấn đề 64024656, 64247586 và 64525881: Không báo cáo lỗi khi tải lớp không thành công trừ phi người dùng tải các lớp cụ thể bằng cách bao gồm đối số runner lớp
-e
. - Vấn đề 64877246: Thêm các lớp bị thiếu vào tệp JAR nguồn.
- Thêm tuỳ chọn
Runner
- Đơn giản hoá logic
ShardingFilter
. - Vấn đề 65025743: Bộ lọc
@RequiresDevice
hiện hỗ trợ trình mô phỏng FTL.
- Đơn giản hoá logic
AndroidTestOrchestrator
- Không sao chép các lỗi báo cáo. Khi một quá trình kiểm thử gặp sự cố sau khi không thực hiện được, thì chỉ có một lỗi được báo cáo cho kiểm thử đó.
- Sửa Javadoc cho Trình điều phối
- Giờ đây, các kiểm thử được xem là bị bỏ qua nếu quá trình từ xa gặp sự cố.
- Nay xử lý các trường hợp kiểm thử bị bỏ qua.
- Nay loại trừ các trường hợp kiểm thử bị bỏ qua từ chân trang để khớp với các kết quả cũ.
- Khắc phục các vấn đề về quyền khi bắt đầu chạy. Báo cáo kiểm thử hiện được ghi vào thẻ SD trên Android 7.0 (API cấp 24) trở lên.
Espresso 3.0.0, Runner 1.0.0, Rules 1.0.0, AndroidTestOrchestrator 1.0.0 (25/7/2017, Thông báo)
Thay đổi có thể gây lỗi
- Tất cả cấu phần phần mềm
- Giảm mức hỗ trợ dành cho API cấp 15 trở xuống – Tuy nhiên, SDK tối thiểu vẫn trỏ đến API cấp 9 để người dùng có thời gian nâng cấp
- Espresso
- Lớp
android.support.test.espresso.contrib.CountingIdlingResource
không dùng nữa đã bị xoá và chuyển sangandroid.support.test.espresso.idling.CountingIdlingResource
- Sử dụng
getInstance().register()
thay vìregisterIdlingResources()
- Sử dụng
- Guava hiện được chuyển sang một không gian tên "nội bộ" khác. Nếu bạn vô tình sử dụng API Guava thông qua không gian tên Espresso, bạn có thể sẽ gặp một vài gián đoạn
- Xoá tất cả tệp tham chiếu đến Guava được tô bóng (
.core.deps.guava.
) - Nâng cấp Thư viện hỗ trợ lên phiên bản 25.4.0 trở lên
- Xoá tất cả tệp tham chiếu đến Guava được tô bóng (
- Lớp
Lỗi đã biết
- AndroidTestOrchestrator
- Các đối số runner
-e numShards
và-e shardIndex
hiện không được hỗ trợ - Các kiểm thử tham số hoá hiện chưa được hỗ trợ
- Các đối số runner
Tính năng mới
- Espresso
- Hỗ trị đa quy trình Espresso mới trên API 26 dành cho
espresso-core
vàespresso-web
, nhưng không dành choespresso-contrib
IdlingRegistry
API có dung lượng nhẹ- mới
- Phát hành trong
com.android.support.test.espresso:espresso-idling-resource:3.0.0
- Phương thức không dùng nữa:
- Phát hành trong
- API mới để giúp đồng bộ hoá với
Executors
- Cấu phần phần mềm maven mới:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0
- Chứa các lớp
IdlingScheduledThreadPoolExecutor
vàIdlingThreadPoolExecutor
- Cấu phần phần mềm maven mới:
- API mới giúp đồng bộ hoá với yêu cầu và phản hồi của mạng.
- Cấu phần phần mềm maven mới:
com.android.support.test.espresso.idling:idling-net:3.0.0
- Chứa lớp
UriIdlingResource
- Cấu phần phần mềm maven mới:
- Trình so khớp thành phần hiển thị
espresso-core
mới:hasBackground()
khớp với tài nguyên có thể vẽ trên nền của đối tượngView
hasTextColor()
khớp với màu của đối tượngTextView
- Phương thức hành động đối với thành phần hiển thị mới:
- Thành phần hiển thị nâng cao
scrollTo()
hoạt động với các thành phần con cháu củaListView
repeatedlyUntil()
– Thực hiệnViewAction
trên một thành phần hiển thị cho đến khi thành phần hiển thị đó khớp vớiViewMatchers
mong muốn
- Thành phần hiển thị nâng cao
- Phương thức Espresso mới:
pressBackUnconditionally()
– Tương tự nhưpressBack()
nhưng không có ngoại lệ khi Espresso di chuyểnnoActivity()
– Bạn không cần đợi một hoạt động trước khi thực hiệnViewAction
hoặcViewAssertion
onIdle()
– Lặp lại chuỗi chính cho đến khi ứng dụng chuyển sang trạng thái không hoạt độngonIdle(Callable<T>)
– Giống nhưonIdle()
, nhưng lấy thêmCallable
làm tham số và được thực thi sau khi ứng dụng không hoạt động
webScrollIntoView()
– Nguyên tửespresso-web
mới cho phép bạn cuộn trong mộtWebView
- Hỗ trị đa quy trình Espresso mới trên API 26 dành cho
- Runner
-
InterceptingActivityFactory
vàSingleActivityFactory
– Cung cấp chức năng để kiểm thử một hoạt động tách biệt với thế giới bên ngoài bằng các phương thức ghi đè nhưstartService()
vàsendBroadcast()
-
Thêm hỗ trợ cho việc sử dụng JUnitParams
với
AndroidJUnitRunner
-
Bắt đầu xử lý
@UiThreadTest
ở cấp chạy kiểm thử cốt lõi và ngừng dùng@UiThreadTestRule
– Điều này cho phép việc sử dụng chú thích@UiThreadTest
trực tiếp trên các phương thức được chú thích bằng@Before
và@After
-
Chú thích
@SdkSupress
hiện hỗ trợ giá trị củamaxSdkVersion
(Vấn đề 37067792) -
-e classLoader
– Cung cấp khả năng truyền trình tải lớp bằng cách sử dụng đối số runner -
-e filter
– Thêm hỗ trợ để chỉ định các bộ lọc JUnit tuỳ chỉnh bằng cách sử dụng đối số runner. -
-e runnerBuilder
– Cho phép các nhà phát triển triển khaiRunnerBuilder
của riêng mình để có thể quyết định khả năng và cách thức chạy trong trong một lớp cụ thể.
-
- Quy tắc
ProviderTestRule
– API mới để kiểm thử các đối tượngContentProvider
getActivityResult()
vàActivityResultMatchers
– API mới để truy xuất kết quả hoạt động của một hoạt động đã gọisetResult()
- AndroidTestOrchestrator
- Android Test Orchestrator
cung cấp một cách mới để thu thập và chạy kiểm thử, đồng thời chú trọng đến độ chính xác và tính tách biệt. Trình điều phối (Orchestrator) là một quá trình đo lường độc lập, tạo ra một quy runner đo lường cho mỗi lần kiểm thử và thu thập kết quả.
- Các sự cố xảy ra với ứng dụng sẽ làm giảm khả năng đo lường runner nhưng không ảnh hưởng tới trình điều phối, cho phép bộ kiểm thử của bạn tiếp tục
- Yêu cầu cài đặt trình điều phối APK –
'com.android.support.test:orchestrator:1.0.0'
- Phiên bản 1.0 chỉ có giao diện dòng lệnh; việc tích hợp với Android Studio và Firebase Test Labs đã được lên kế hoạch
- Android Test Orchestrator
cung cấp một cách mới để thu thập và chạy kiểm thử, đồng thời chú trọng đến độ chính xác và tính tách biệt. Trình điều phối (Orchestrator) là một quá trình đo lường độc lập, tạo ra một quy runner đo lường cho mỗi lần kiểm thử và thu thập kết quả.
Sửa lỗi
- Espresso
- Cải thiện tính năng đồng bộ hoá thành phần hiển thị gốc để giảm đáng kể tình trạng mất dữ liệu
- Khắc phục tình trạng sai hỏng của
IdlingResourceRegistry
- Đồng bộ hoá tốt hơn so với đối tượng
IdlingResource
- Vấn đề 37132680: Espresso không đợi quá trình tạo hộp thoại hoàn tất trước khi thực hiện hành động tiếp theo
- Vấn đề 37103280: Espresso nên gửi quy tắc người dùng ProGuard để họ không phải thêm các quy tắc đó
- Vấn đề 37094726: Các ý định Espresso có chứa nhãn ứng dụng không cần thiết
- Vấn đề 37093953: Espresso: Không có tuỳ chọn kiểm tra lỗi cho văn bản có lỗi rỗng/trống
- Vấn đề 37071776:
espresso-core
nhúng tệp.pom
của Guava - Vấn đề 37062612: NPE trong
release()
- Vấn đề 37063389: Việc Guava và
espresso-web
là các phần phụ thuộcandroidTest
sẽ không biên dịch - Vấn đề 37070533: Thêm hỗ trợ cho
NavigationView
trong Thư viện hỗ trợ thiết kế Android
- Runner
-
Khắc phục khả năng sử dụng
@UiThreadTest
khi kết hợp với@Test(timeout = 123)
- Khắc phục đối số runner
-e notClass
- Khắc phục
-e log
để hỗ trợ các bộ kiểm thử JUnit3 và JUnit4, cũng như các runnerParameterized
vàEnclosed
- Vấn đề 37663530: Chờ tất cả hoạt động kết thúc trước và sau mỗi phương thức kiểm tra
- Vấn đề 37132680: Espresso không đợi quá trình tạo hộp thoại hoàn tất trước khi thực hiện hành động tiếp theo
-
Vấn đề 37123213:
@RequiresDevice
bị bỏ qua trên x86_64 ABI -
Vấn đề 37101485: Một số đối số do tệp kê khai cung cấp cho
AndroidJUnitRunner
– chẳng hạn như kích thước kiểm thử, chú thích và gỡ lỗi – bị bỏ qua - Vấn đề 37082857: Không thực hiện được kiểm thử bán song song Espresso trên các đối tượng tĩnh
-
Vấn đề 37063396: Ngữ cảnh không được khởi tạo bằng
ProviderTestCase2
(gây raNullPointerException
)
-
Khắc phục khả năng sử dụng
- Quy tắc
- Khắc phục vòng đời của
ActivityTestRule
để thống nhất hành vi khi khởi chạyActivityTestRule
thông thường. - Vấn đề 37079943: Khắc phục
ServiceTestRule
để cho phép tái liên kết - Vấn đề 37109342: Thêm
getActivityResult()
vàActivityResultMatchers
- Khắc phục vòng đời của
- UiAutomator
setUiAutomationFlags()
để sử dụng vớiUiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
– việc này cho phép bạn sử dụngUiAutomator
trong khi các dịch vụ hỗ trợ truy cập khác đang chạy- Vấn đề 37082813:
setText()
trên đối tượngEditText
trống gây raNullPointerException
nếu cấp API thấp hơn 19.
Thay đổi đáng chú ý khác
- Tệp nhị phân nay được phát hành qua Google Maven
- Giảm kích thước của các tệp
espresso-core
vàespresso-web
– các phần phụ thuộc được nhúng hiện đã áp dụng ProGuard - Tất cả tệp
.aar
hiện đều bao gồm quy tắc ProGuard - Thêm các tệp
proguard_library.cfg
vào cấu phần phần mềm đã phát hành - Giao diện
Tapper
có phiên bảnsendTap()
mới để triển khai
Đóng góp bên ngoài
- Espresso
- Runner
- Quy tắc
Espresso 2.2.2, Runner/Rules 0.5 (22/2/2016, bản phát hành không thông báo)
Tính năng mới
- espresso
- Vấn đề 194253: Thêm hỗ trợ cho NavigationView trong thư viện thiết kế hỗ trợ Android
- Thêm các lượt kiểm tra cho ảnh động và hiệu ứng chuyển đổi đã kích hoạt
ViewMatcher
API mới:withResourceName()
Sửa lỗi
- espresso
- Vấn đề 195331: espresso-core nhúng các tệp pom của guava
- Di chuyển bộ đếm tài nguyên không hoạt động ra khỏi espresso-contrib
- quy tắc
- Vấn đề 187249: NPE ở
Intents.release()
- Vấn đề 187249: NPE ở
- runner
- Vấn đề 196066: Đối số
-e log true
trongAndroidJUnitRunner
không vượt qua kiểm thử thực tế - Chờ trình gỡ lỗi trong
onCreate()
của runner - Di chuyển tất cả chú thích kiểm thử được hỗ trợ ra khỏi nền tảng và đưa vào ATSL
- Xoá tệp kết xuất dấu vết ngăn xếp về việc không có JSBridge
- Khắc phục
AndroidAnnotatedBuilder
- Vấn đề 196066: Đối số
Thay đổi đáng chú ý khác
ActivityTestRule
,UiThreadTestRule
,IntentsTestRule
vàServiceTestRule
đã kết thúc giai đoạn kiểm thử- Thêm tệp cài đặt kiểu mã để định dạng mã thống nhất
Espresso 2.2.1, Runner/Rules 0.4 (2015-09-15)
Tính năng mới
- quy tắc
- Thêm hàm khởi tạo
IntentsTestRule
mới để tương thích hoàn toàn vớiActivityTestRule
- Thêm hàm khởi tạo
- runner
- Bổ sung cài đặt các trường hợp multidex đặc biệt cho API từ cấp 15 trở xuống.
- Bổ sung các bộ lọc loại trừ cho lớp và gói
- Chạy tất cả kiểm thử ngoại trừ những kiểm thử trong một lớp cụ thể:
adb shell am instrument -w -e notClass com.android.foo.FooTest
- Chạy tất cả ngoại trừ một kiểm thử duy nhất:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
- Chạy tất cả các kiểm thử, ngoại trừ một gói cụ thể:
adb shell am instrument -w -e notPackage com.android.foo.bar
- Chạy tất cả kiểm thử ngoại trừ những kiểm thử trong một lớp cụ thể:
Đóng góp bên ngoài
- espresso
- 157911: Thêm trình so khớp thành phần hiển thị cho kiểu hoạt động đầu vào trên đối tượng
EditText
- 157912: Thêm trình so khớp thành phần hiển thị để so khớp văn bản lỗi trên đối tượng
EditText
- 150674: Thêm hỗ trợ
DrawerActions
cho các ngăn có trọng lực tuỳ ý - 150744:
DrawerActions
không còn rò rỉparentListener
- 153303: Trọng lực được chỉ định trên dấu kiểm "ngăn đang mở hay đóng"
- 157910: Thêm
DrawerLayout
nhà máy hành động đóng và mở
- 157911: Thêm trình so khớp thành phần hiển thị cho kiểu hoạt động đầu vào trên đối tượng
Sửa lỗi
- espresso
ViewActions.closeSoftKeyboard()
nay đảm bảo rằng bàn phím mềm đã biến mất hoàn toàn- Khắc phục vấn đề đồng bộ hoá với phương thức
Espresso.pressBack()
của Espresso tại API cấp 21 trở lên - Khắc phục đồng bộ hoá cho ảnh động đóng bàn phím trên API cấp độ 23
- quy tắc
- Khắc phục
ServiceTestRule
ở API cấp 23,startService()
phải luôn được gọi bằng mộtIntent
rõ ràng
- Khắc phục
- runner
- Khắc phục tuỳ chọn hỗ trợ
JaCoCo
gradle bị hỏng - Khắc phục tuỳ chọn hỗ trợ phân đoạn kiểm thử bị hỏng
- Khắc phục trạng thái không nhất quán trong runner kiểm thử sau khi hết thời gian chờ kiểm thử loại
JUnit3
.
- Khắc phục tuỳ chọn hỗ trợ
Thay đổi đáng chú ý khác
- Sửa lỗi Javadox và cải thiện thông báo lỗi
- Bỏ qua các phương thức
suite()
và không bỏ qua các lỗi khởi đầu khi sử dụng bộ lọc phương thức
Espresso 2.2 / ATSL 0.3 (2015-06-09)
Tính năng mới
- espresso-web 2.2
- Hỗ trợ
WebView
mới
- Hỗ trợ
- espresso-core 2.2
- Di chuyển để sử dụng dấu chữ thập v2
- Di chuyển để sử dụng hamcrest v1.3
- espresso-contrib 2.2
- Kiểm tra khả năng truy cập
- Hỗ trợ trọng lực
DrawerActions
- các quy tắc 0.3
- luật
DisableOnAndroidDebug
- luật
- runner 0.3
- Nâng cấp từ JUnit v4.10 lên JUnit v4.12
- Di chuyển để sử dụng Hamcrest v1.3
Sửa lỗi
- Khắc phục
DrawerActions
rò rỉParentListener
- Lỗi giả định hiện được xem là một kiểm thử bỏ qua thay vì một kiểm thử không thành công.
- Khắc phục phiên bản hoạt động bị rò rỉ
MonitoringInstrumentation
thông quaExecutorService
- Khắc phục các hoạt động bị mất nguồn gốc bị mắc kẹt trong giai đoạn bị dừng
- Cập nhật
Until.scrollFinished()
để trả về kết quả true nếu không có sự kiện cuộn nào được tạo. Bảo vệ khỏi NPE tiềm ẩn ởUiObject2#setText()
.
Espresso 2.1, Test Runner/Rules 0.2 and UIAutomator 2.1.0 (21/4/2015)
Thay đổi có thể gây lỗi
- Cấu phần phần mềm chạy kiểm thử được chia đôi và tên được thay đổi từ
com.android.support.test:testing-support-lib:0.1
thànhcom.android.support.test:runner:0.2
vàcom.android.support.test:rules:0.2
.
Tính năng mới
- espresso-intents: Một API dạng Mockito khởi chạy kiểm thử liên hoạt động khép kín bằng cách cho phép người kiểm thử xác minh và giả lập các ý định gửi đi
IntentsTestRule
: mở rộngActivityTestRule
, đã khởi chạy và phát hành Espresso-Intents trong các kiểm thử chức năng trên giao diện người dùng
- espresso-core
ViewActions
: Bổ sung khả năng chạy xác nhận toàn cầu trước khi chạy các hành động. Điều này sẽ hữu ích cho các khung xây trên Espresso để xác thực trạng thái của hệ phân cấp thành phần hiển thị trong khi bộ kiểm thử Espresso hiện có được thực thi- Quá tải
ViewMatchers.withContentDescription()
resId
- quy tắc
ActivityTestRule
: Quy tắc này cung cấp kiểm thử chức năng cho một hoạt động đơn lẻ- Các chú thích
UiThreadRule
vàUiThreadTest
: Quy tắc này cho phép phương thức kiểm thử được chú thích bằngUiThreadTest
được thực thi trên chuỗi chính của ứng dụng (hoặc chuỗi giao diện người dùng) ServiceTestRule
: Quy tắc này cung cấp kiểm thử chức năng cho một dịch vụ
- runner
ApplicationLifecycleCallback
: Lệnh gọi lại để giám sát các sự kiện trong chu trình hoạt động của ứng dụng- Tất cả đối số runner nay có thể được chỉ định trong tệp kê khai Android sử dụng một thẻ
<meta-data>
- UIAutomator
UiDevice.dumpWindowHierarchy()
nay có thể chấp nhận mộtFile
hoặc mộtOutputStream
Sửa lỗi
- espresso
- Trình so khớp con trỏ sẽ trả về
false
nếu không có cột nào được tìm thấy để Hamcrest có thể di chuyển sang con trỏ tiếp theo NullPointerException
cùng vớiPreferenceMatchers
withTitle
không còn xảy ra- Việc huỷ đăng ký tài nguyên không hoạt động không còn khiến Espresso cho rằng chúng ta có tài nguyên không hoạt động.
- Cập nhật phiên bản Chú thích hỗ trợ (Support Annotations) do Espresso Contrib sử dụng
- Trình so khớp con trỏ sẽ trả về
- runner
AndroidJUnit4
nay bỏ qua các kiểm thử với giả định không thành công
- UIAutomator
- Chạy trình quan sát để ngăn
StaleObjectException
- Chạy trình quan sát để ngăn
Thay đổi đáng chú ý khác
- Thêm thông báo lỗi hiệu quả hơn khi chúng ta không thể typeText bằng một chuỗi không phải chữ La-tinh
UIAutomator 2.0 (2015-03-12)
UI Automator hiện được dựa trên Công cụ Android và bạn có thể tạo và chạy kiểm thử bằng lệnh ./gradlew connectedCheck
.
Espresso Version 2.0, Test Runner 0.1 (Ngày phát hành: 19/12/2014)
Thay đổi có thể gây lỗi
- Espresso Chuyển sang một không gian tên mới, từ
android.support.test.espresso
sangandroid.support.test.espresso
- Các cấu phần phần mềm Espresso đã được đổi tên
espresso-1.1.jar
giờ làespresso-core-release-2.0.jar
- Di chuyển giao diện
IdlingResource
vào một thư viện riêng:espresso-idling-resource-release-2.0.jar
CountingIdlingResource
nay nằm trongespresso-contrib-release-2.0.jar
(đáng lẽ phải luôn như vậy)
- Tuỳ chọn (phần phụ thuộc guava) đã được xoá khỏi API công khai để hỗ trợ việc đóng gói lại phần phụ thuộc guava và tránh va chạm DEX (nguồn chính gây ra nỗi đau lập trình). Các phương thức bị ảnh hưởng bao gồm:
ViewAssertion.check()
HumanReadables.getViewHierarchyErrorMessage()
Tính năng mới
- Hành động
ViewActions
replaceText()
openLink()
- Vuốt lên và xuống
- espresso-contrib
RecyclerViewActions
: Xử lý tương tác vớiRecyclerViews
PickerActions
: Xử lý tương tác bằng bộ chọnDate
vàTime
- Trình so khớp
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
: Trình so khớp cho kiểm thử bố cục liên quan đến i18nCursorMatchers
: Một tập hợp các trình so khớp cho các đối tượngCursor
- Xác nhận
PositionAssertions
, bao gồmisLeftOf()
vàisAbove()
: Tập hợp củaViewAssertions
để kiểm tra vị trí tương đối của các phần tử trên màn hìnhLayoutAssertions
: Xác nhận cho kiểm thử bố cục liên quan đến i18n
- Ứng dụng kiểm thử: Nhiều hoạt động/kiểm thử mẫu mới
- Khác
Espresso.unregisterIdlingResources()
vàEspresso.getIdlingResources()
: Giúp bạn linh hoạt hơn khi làm việc vớiIdlingResources
ViewInteraction.withFailureHandler()
: Cho phép ghi đè trình xử lý lỗi từonView()
- Hỗ trợ
onData()
choAdapterViews
được hỗ trợ bởiCursorAdapters
Sửa lỗi
ViewMatchers.isDisplayed()
khớp với các thành phần hiển thị toàn màn hình, nhưng các thành phần hiển thị đó đã không còn hiển thị dưới 90%- Việc thực hiện lệnh gọi hành động vuốt đến
DrawerActions.openDrawer()
không còn tạo ra kết quảIdlingResourceTimeoutException
Thay đổi đáng chú ý khác
- Chuyển từ Xây dựng với Maven sang Gradle
- Di chuyển các phần phụ thuộc Espresso (Guava, Dagger, Hamcrest) để tránh các va chạm DEX
- Thay đổi để trả về kết quả thành công hoặc thất bại khi đăng ký và huỷ đăng ký tài nguyên không hoạt động.
- Hỗ trợ Lollipop: Đặt
message.recycle()
sau một giao diện cho các thay đổi liên quan đến phiên bản - Chuyển cấp SDK mục tiêu sang mức 21 – chủ yếu ảnh hưởng đến ứng dụng kiểm thử
Phiên bản 1.1 (Ngày phát hành: 8/1/2014)
Espresso
swipeLeft
vàswipeRight
ViewActions
mới- Hỗ trợ đa cửa sổ: Một tính năng nâng cao cho phép lựa chọn cửa sổ mục tiêu để Espresso hoạt động trên đó
- Các cải tiến cho
TypeTextAction
: Cho phép nhập văn bản vào thành phần hiển thị tập trung trước, giúp bạn dễ dàng nối văn bản hơn - Sửa nhiều lỗi
Thư viện Espresso Contrib
- Thư viện mới này có các tính năng bổ sung cho Espresso, nhưng không thuộc thư viện chính
DrawerActions
mới để hoạt động trênDrawerLayout
: Có phần phụ thuộc vào Thư viện hỗ trợ Android, do đó nó không được đưa vào thư viện Espresso chính
Kiểm thử mẫu
- Các kiểm thử này đã được chuyển vào cùng một gói với ứng dụng kiểm thử
- Các Maven POM đã được khắc phục để xoá bỏ các phần phụ thuộc guava, do đó,
mvn install
hiện có thể hoạt động