[FLUTTER] Cách viết Unit Test trong Flutter (Phần 2)

Lời ngỏ

Mỗi ngôn ngữ, hay framework đều có các cách để triển khai Unit Test khác nhau. Tuy nhiên trong bài viết này mình sẽ chú trọng vào Unit Test trong Flutter.

B. Cách triển khai Unit Test trong Flutter

1. Cài đặt thư viện

Để có thể viết Unit Test trong Flutter, chúng ta cần thêm thư viện test, nhớ thêm vào phần dev_dependencies nhé.

2. Cấu hình và giải thích

  • Đầu tiên chúng ta tạo một hàm xử lý để giả định cho một chức năng trong app
class Calculation{
  int add(int a, int b){
    return a+b;
  }
  int subtract(int a, int b){
    return a-b;
  }
}
  • Trong class Calculation, chúng ta có hàm xử lý là hàm “add”,”subtract”, đây chính là hàm chúng ta cần viết unit test. Bước tiếp theo là tạo một class để viết unit test.
  • Ở trong phần package tree của project chúng ta sẽ thấy một package tên là “test”.

Đây sẽ là nơi chúng ta viết các unit test cho ứng dụng.

Có thể thấy ở bên trong folder này đã có một class được viết sẵn có tên là “widget_test.dart”, đây sẽ là class dùng trong việc test các widget của ứng dụng.

  • Chúng ta tạo thêm một file đặt tên là “calculation_test” (Hãy đặt tên của file theo những chức năng, lớp mà chúng ta muốn test để dễ trong việc phân biệt và tìm kiếm.
  • Chúng ta tạo một class “main”, bên trong sẽ viết các hàm unit test
import 'package:flutter_test/flutter_test.dart';
import 'package:unit_test_sample/calculation.dart';

void main(){
  /// Init class which needs tested
  Calculation calculation = Calculation();
  /// Test function add
  test("Sum of two integer ", () {
    int result = calculation.add(5, 4);
    expect(result, 9);
  });
}
  • Ở đây ta sử dụng hàm “test” để viết các unit test cho từng chức năng.

Hàm “test” này có 2 tham số cần truyền vào đó là:

  • Mô tả của test, nơi chúng ta có thể mô tả xem hàm test này đang test chức năng nào, hoặc có thể bổ sung thêm một vài mô ta cho input chúng ta truyền vào (ví dụ như input đó bị lỗi, sai, hay đúng).
  • Tham số còn lại chính là một hàm, ở đây chúng ta sẽ viết các bước để có thể gọi được đến hàm cần test (ở đây là hàm “add”), cuối cùng chúng ta sử dụng hàm “expect” để kiểm tra kết quả của hàm test với kết quả mà chúng ta mong đợi. Tham số đầu tiên sẽ là kết quả của hàm được test, tham số còn lại là kết quả mà chúng ta mong muốn.

Như vậy phần chuẩn bị hàm test đã xong, giờ việc chúng ta cần làm là chạy thôi:

  • Ấn chuột phải rồi chọn “run test in calculation” hoặc ấn tổ hợp phím Ctrl + Shift + F10:
  • Sau một lúc chạy thì ở phía dưới sẽ hiển thị một màn hình kết quả test:

Nếu có tick xanh ở trước mô tả “Sum of two integer”, có nghĩa là test của chúng ta đã chạy đúng như mong đợi.

Thử thay đổi kết quả mong đợi để xem chuyện gì xảy ra:

test("Sum of two integer ", () {
    int result = calculation.add(5, 4);
    expect(result, 8);
  });

Ngay lập tức test của chúng ta đã chạy sai, trong phần log lỗi cũng đã chỉ ra cho chúng ta biết chúng ta sai ở đâu.

  • Expected (kết quả mong đợi) là 8 trong khi Actual (kết quả được tính toán) là 9, từ đó chúng ta sẽ rất dễ dàng trong việc fix lỗi.

Khi có nhiều hàm test cùng liên quan đến một vấn đề, chúng ta có thể cho chúng vào trong một “group” để dễ quản lý hơn.

void main() {
  /// Init class which needs tested
  Calculation calculation = Calculation();
  group(
    "Calculate with integer",
    () {
      /// Test function add
      test("Sum of two integer ", () {
        int result = calculation.add(5, 4);
        expect(result, 9);
      });

      /// Test function subtract
      test("Subtraction of two integer ", () {
        int result = calculation.subtract(5, 4);
        expect(result, 1);
      });
    },
  );
}

Và khi chạy lên chúng ta sẽ được kết quả như sau:

3. Tài liệu tham khảo

Chúc các bạn luôn nhìn thấy một màu xanh lá khi chạy Unit Test

Tác giả: LamNT59

Leave a Comment

* By using this form you agree with the storage and handling of your data by this website.

You may also like