Unit Testing trong Flutter

Unit Testing trong Flutter

Thêm Unit test(UT) vào ứng dụng Flutter của bạn.

UT rất hữu ích để xác minh hành động của một function, method, or class. Package test cung cấp cho chúng ta bộ khung cốt lõi để viết được các bài UT, và package flutter_test cung cấp cho chúng ta những tiện ích bổ sung để có thể UT được Widget.

Bắt đầu nào!

Tại đây tôi đã thiết lập một biểu mẫu Đăng Nhập cơ bản với các trường email, mật khẩu và nút đăng nhập. Khi nhấn vào nút đăng nhập, biểu mẫu được xác nhận rằng email và mật khẩu không được trống.

Màn hình đăng nhập

Để xác thực biểu mẫu tôi đã tạo một class FieldValidator có hai methods validateEmail và validatePassword.

FieldValidator class

Sau đó chúng ta tạo một tệp mới với tên email_password_validator_test.dart trong thư mục test.

Viết một bài test thôi!

import 'package:exploreflutter/utils/validator.dart';
import 'package:test/test.dart';

void main() {
 test('Empty Email Test', () {
   var result = FieldValidator.validateEmail('');
   expect(result, 'Enter Email!');
 });
}

Bây giờ chúng ta bắt đầu chạy thử test nào.

Test thành công

Nó đã hoạt động rồi!

Thêm một bài test khác và kiểm tra nó.

import 'package:exploreflutter/utils/validator.dart';
import 'package:test/test.dart';

void main() {
 test('Empty Email Test', () {
   var result = FieldValidator.validateEmail('');
   expect(result, 'Enter Email!');
 });

 test('Invalid Email Test', () {
   var result = FieldValidator.validateEmail('');
   expect(result, 'Enter Valid Email!');
 });
}
Test thất bại

Lần kiểm tra thứ 2 này đã không thành công vì chúng ta đã chuyển một chuỗi trống đến validateEmail với kết quả là “Enter Valid Email!” nhưng đúng ra phải là “Enter Email!”

Tiến hành sửa lỗi và thêm một số test khác.

import 'package:exploreflutter/utils/validator.dart';
import 'package:test/test.dart';

void main() {
 test('Empty Email Test', () {
   var result = FieldValidator.validateEmail('');
   expect(result, 'Enter Email!');
 });

 test('Invalid Email Test', () {
   var result = FieldValidator.validateEmail('');
   expect(result, 'Enter Valid Email!');
 });

 test('Valid Email Test', () {
   var result =         FieldValidator.validateEmail('ajay.kumar@nonstopio.com');
   expect(result, null);
 });

 test('Empty Password Test', () {
   var result = FieldValidator.validatePassword('');
   expect(result, 'Enter Password!');
 });

 test('Invalid Password Test', () {
   var result = FieldValidator.validatePassword('123');
   expect(result, 'Password must be more than 6 charater');
 });

 test('Valid Password Test', () {
   var result = FieldValidator.validatePassword('ajay12345');
   expect(result, null);
 });
}

Chúng ta có thể chạy test này ngay trong Android Studio.

Chạy test trong Android Studio

Tiếp tục sửa lỗi và chạy lại nào.

test('Invalid Email Test', () {
 var result = FieldValidator.validateEmail('ajay');
 expect(result, 'Enter Valid Email!');
});
Tất cả test thành công

Nguồn: Ajay Kumar