Xamarin.Forms automation test với Xamarin.UITest và Test cloud
Thành phần UITest của Xamarin Test Cloud có thể sử dụng với Xamarin.Forms để viết UI tests chạy trên Cloud trên hàng trăm thiết bị. Xamarin.UITest cho phép các nhà phát triển viết các testcase giao diện người dùng tự động cho Android và iOS app. Với một số điều chỉnh nhỏ, những ứng dụng ...
Thành phần UITest của Xamarin Test Cloud có thể sử dụng với Xamarin.Forms để viết UI tests chạy trên Cloud trên hàng trăm thiết bị. Xamarin.UITest cho phép các nhà phát triển viết các testcase giao diện người dùng tự động cho Android và iOS app. Với một số điều chỉnh nhỏ, những ứng dụng Xamarin.Forms có thể được test bằng Xamarin.UITest, bao gồm chia sẻ code test giống nhau. Một dự án UITest đã được thêm vào Xamarin.Forms solution, các bước để viết và chạy test cho 1 ứng dụng Xamarin.Forms giống với Xamarin.Android hoặc Xamarin.iOS.
Yêu cầu Xamarin Test Cloud và Xamarin.UITest chỉ support Android và iOS apps. Còn Windows Phone và Windows của Xamarin.Forms apps không thể test trên Test Cloud. Điều quan trọng là phải hiểu các khái niệm được mô tả trong phần Giới thiệu về Hướng dẫn về Cloud test Xamarin. Giả định rằng phiên bản ổn định gần đây nhất của Xamarin.UITest NuGet Package được cài đặt trong dự án UITest. Giả định rằng các dự án iOS có phiên bản mới nhất của Xamarin Test Cloud Agent được cài đặt.
Để chạy Xamarin.UITests với Visual Studio, phải đáp ứng các phụ thuộc sau:
- NUnit 2.6.x - Xamarin.UITest không tương thích với NUnit 3.x.
- Một Test Runner cho Visual Studio - Một 3rd party test runner, chẳng hạn như NUnit Test Adapter for NUnit 2 hoặc Resharper từ Jetbrains, là cần thiết cho Visual Studio để có thể chạy các bài kiểm tra NUnit.
- Android SDK - Chỉ khi test ứng dụng Android. Windows yêu cầu biến môi trường ANDROID_HOME được thiết lập với đường dẫn đến Android SDK.
- Java Developer Kit - Chỉ khi test các ứng dụng Android.
- Không thể chạy UITests cho iOS apps bằng Visual Studio hoặc trên Windows.
Thêm UITest Support vào Xamarin.Forms apps UITest tự động hoá giao diện người dùng bằng cách kích hoạt các control trên màn hình và thực hiện nhập liệu ở bất cứ đâu mà người dùng thường tương tác với ứng dụng. Để cho phép kiểm tra có thể nhấn một nút hoặc nhập văn bản vào một ô, mã kiểm tra sẽ cần một cách để xác định các control trên màn hình. Để kích hoạt mã UITest để tham chiếu đến các control, mỗi control cần một số nhận dạng duy nhất. Trong Xamarin.Forms, cách được đề nghị để đặt định danh này là bằng cách sử dụng thuộc tính AutomationId như hình dưới đây: Thuộc tính AutomationId có thể thiết lập trong XAML: Một AutomationId duy nhất nên được thêm vào tất cả các control là bắt buộc để thử nghiệm (bao gồm các nút, các mục nhập văn bản và các nhãn có giá trị có thể cần phải được truy vấn).
iOS Application Project: Để chạy testcase trên iOS thì Xamarin Test Cloud Agent Nuget package phải được thêm vào project. Một khi nó đã được thêm vào, sao chép mã sau vào hàm AppDelegate.FinishedLaunching: Hình dưới đây cho thấy biến trình biên dịch ENABLE_TEST_CLOUD được đặt cho Debug builds:
Android Application Project Không giống như iOS, các dự án Android không cần bất kỳ mã khởi động đặc biệt nào.
Viết UITests Dùng AutomationId trong Xamarin.Forms UI Trước bất kỳ UITests có thể được viết, Xamarin.Forms giao diện người dùng phải đảm bảo rằng tất cả các điều khiển trong giao diện người dùng đều có một AutomationId để chúng có thể tham chiếu trong test code. Tham chiếu tới AutomationId trong UITests Khi viết UITests, giá trị AutomationId được hiển thị khác nhau trên mỗi nền tảng:
- iOS sử dụng ID field
- Android sử dụng label field Để viết UITest đa nền tảng sẽ tìm AutomationId trên cả 2 nền tảng Android và iOS dùng Marked test truy vấn: Sử dụng: app.Query(“MyButton”) cũng được.
Thêm một UITest Project vào một Solution Visual Studio có một template để giúp thêm một Xamarin.UITest project vào một Xamarin.Forms solution đang tồn tại:
- Chuột phải vào solution, và chọn File > New project.
- Từ Visual C# templates > Test > UI Test App > Cross Platform template: Điều này sẽ thêm 1 project với NUnit, Xamarin.UITest, vaf NUnitTestAdapter Nuget vào solution: NUnitTestAdapter là một hãng thứ 3 Test Runner cho phép Visual Studio để chạy NUnit test. Project mới cũng có 2 class trong đó. AppInitializer chứa code để giúp khởi tạo và thiết lập tests. Class khác là Tests chứa code mẫu để giúp chạy UITests.
- Thêm một project tham chiếu từ UITest project đến Xamarin.Android project: Điều này cho phép NUnitTestAdapter để chạy UITest cho Android app từ Visual Studio. Sau khi thêm Xamarin.UITest vào Xamarin.Forms solution, có thể tạo UITests chạy chúng ở local và đưa chúng vào Xamarin Test Cloud
Tóm tắt Xamarin.Forms app có thể dễ dàng test bằng Xamarin.UITest sử dụng một cơ chế đơn giản để làm rõ AutomationID như một view duy nhất cho test tự động. Một khi UITest project đã được thêm vào Xamarin.Forms solution thì các bước để viết và chạy tests cho Xamarin.Forms app là giống với Xamarin.Android hoặc Xamarin.iOS app.