demo_docs/Knowledge Base/Unit Test Rules.md
2025-05-14 09:42:59 +07:00

1.0 KiB

  • Tuân thủ nguyên tắc First(Fast, Independent, Repeatable, Self-Validating, Timely)
  • Tên test rõ ràng có ý nghĩa
  • Structure Test
    • Arrange: Khởi tạo input
    • Act: Thực thi hàm | Logic
    • Assert: Kiểm tra output
      • Assert: Tiếp tục test (testify/assert)
      • Error: Dừng ngay lập tức
  • Test tất cả giá trị
    • Normal: các dữ liệu bình thường (a/b - b/a)
    • Biên của hàm: các giới hạn trong hàm(0/a - 0/b)
    • Lỗi: dữ liệu lỗi (a/0 - b/0)
  • Tránh logic phức tạp
    • Test không nên chứa vòng lặp hoặc if trừ khi thật sự cần
    • Mỗi test nên kiểm tra một logic đơn lẻ và rõ ràng
  • Mock External Dependencies
    • Dùng mock: DB,API,File,Email (gomock,testify/mock)
  • Test song song không phụ thuộc
  • Tối thiểu hóa side effect
    • Không test ghi file, database, hoặc gọi API thật trong unit test.
    • Nếu cần test integration, viết riêng ở layer khác (Integration Test).
  • Kiểm tra Coverage
  • Sử dụng t.Run cho subtests