原文
https://medium.com/@sanketsma...
參考
正文
大家好!
首先讓我們瞭解一下為什麼在應用程式還處於開發階段時,我們需要對其執行自動化測試。
自動化測試是一種使用自動化工具測試工具在軟體應用程式上編寫和執行測試用例套件的方法。
如果我們在開發階段測試應用程式,我們可以通過使用自動化測試來檢測可能導致出現例行更改的新錯誤,從而節省時間。
Flutter 自動測試的幾種型別:
- Unit Test 單元測試
- Widget Test 小部件測試
- Integration Test 綜合測試
注意: 我們只在本文中討論單元測試。
什麼是單元測試和測試用例?
單元測試用於驗證單個函式、方法或類的正確性。要測試此函式、方法或類,必須編寫測試用例。為了驗證預期輸出而必須滿足的條件稱為測試用例。
實施程式:
在本文中,我們將為登入頁面執行測試用例,該頁面有兩個欄位: email id 和 password。
步驟 1: 確保在 pubspec yaml 檔案中存在 flutter_test
依賴項。
dev_dependencies:
flutter_test:
sdk: flutter
步驟 2: 建立驗證器類。
我們所有的驗證方法都將在這個類中編寫。這些方法將用於我們的登入頁面(在 email 和密碼 textformfield 驗證器引數中)和 login_unit_test 類中。
- 密碼 TextFormField\_
TextFormField(
validator: Validators.validatePwd,
)
- Validator Class Validator 類
步驟 3: 在測試目錄中建立 login_unit_test 類,併為 Login 編寫測試用例。
現在,我們已經到了編寫測試用例的階段。
void main() {
test('Verify invalid email address', () {
String emailId = 'abc@gmail';
var result = Validators._validateEmailId_(emailId);
expect(result, 'Enter valid Email ID.');
});
test('Verify valid password', () {
String pwd = 'Qwe@12345';
var result = Validators._validatePwd_(pwd);
expect(result, null);
});
}
我們使用 test 函式來定義測試用例。我們必須在這個函式中提供兩個強制引數。第一個引數是一個字串值,即(對特定情況的描述) ,第二個引數是一個函式,我們在其中驗證測試用例。
我們使用 expect 函式將結果與預期進行比較。Expect 函式還有兩個必需的引數。第一個引數是驗證器函式返回的結果,第二個引數是比較器或預期結果。
測試包提供了測試和期望函式。
讓我們回到前面的例子。
第一個測試功能是驗證電子郵件地址。如您所見,有兩個變數: emailId 和 result _emailId_ 之後,Validator 類函式將值返回給 result 變數。
因此,你們中的一些人可能想知道為什麼我將第二個測試用例的預期結果值保留為 _null_。
如果您繼續執行第 3 步,在那裡我們建立了驗證器類,您將注意到,如果值不是空的或者與正規表示式匹配,我們將返回一個空值。這就是為什麼期望的結果值設定為 null 的原因。確保結果是正確的。
您也可以將您的測試用例組合在一起。
group('Multiple test cases for password verification', () {
test('Verify password', () {
String pwd = 'Abc@12345';
var result = Validators._validatePwd_(pwd);
expect(result, null);
});
test('Verify empty password', () {
String pwd = '';
var result = Validators._validatePwd_(pwd);
expect(result, 'Enter Password');
});
});
步驟 4: 執行測試用例。
要執行所有測試用例,只需在終端輸入以下命令: flutter test test/name_of_your_file.dart
- 當所有測試用例通過時,這就是結果。
- 您也可以通過單擊播放按鈕來執行單個測試用例,我在下面的圖片中高亮顯示了這一點。
- 如果測試用例失敗,下面是結果。
結語:
這是一個 Flutter 的單元測試的快速概述。我希望我已經給了您足夠的資訊來嘗試在您的專案中進行單元測試。
© 貓哥
- 微信 ducafecat
- 部落格 ducafecat.tech
- github
- bilibili