Chạy tất cả Unit Test và nhận kết quả Passed có đồng nghĩa với việc toàn bộ code đã được kiểm tra? Câu trả lời là không. Hãy tưởng tượng bạn vừa hoàn thành một chức năng mới trong ứng dụng .NET. Bạn chạy toàn bộ Unit Test và nhận được kết quả: Passed: 120 Failed: 0 Mọi test đều thành công. Tuy nhiên, có thể một method mới chưa được bất kỳ test nào gọi đến, hoặc một nhánh xử lý quan trọng chưa bao giờ được thực thi. Nếu không có thêm thông tin, chúng ta khó biết được những phần code nào thực sự đã được kiểm tra. Trong bài viết này, chúng ta sẽ tìm hiểu Code Coverage , tạo Coverage Report cho một project .NET và sử dụng báo cáo để tìm những phần code chưa được test. 1. Code Coverage là gì? Code Coverage là một phép đo cho biết phần code có thể thực thi nào đã được chạy trong quá trình thực hiện test. Ví dụ, một ứng dụng có 100 dòng code có thể thực thi. Trong quá trình chạy test, 70 dòng được thực thi. Line Coverage có thể đạt 70%. Con số này giúp chúng ta nhận biết n...
Ở Day 6, chúng ta đã thiết kế database đa ngôn ngữ cho hệ thống quản lý Category, sử dụng ba bảng Languages , Categories và CategoryTranslations . Tuy nhiên, khi ứng dụng phát triển, cấu trúc database thường xuyên thay đổi. Chẳng hạn: Bổ sung cột SortOrder để sắp xếp Category. Tạo bảng CategoryAuditLogs để lưu lịch sử thao tác trên Category. Triển khai phiên bản mới lên môi trường Development, Staging hoặc Production mà không phải tự chạy SQL thủ công trên từng database. Nếu mỗi lần thay đổi chúng ta đều mở SQL Server Management Studio rồi chạy script bằng tay, việc triển khai sẽ dễ sai sót và khó kiểm soát. Trong bài này, chúng ta sẽ tìm hiểu cách sử dụng MigrationPlan và MigrationBase của Umbraco 13 để quản lý các thay đổi schema database theo từng bước. 1. Migration là gì? Migration là một bước thay đổi cấu trúc database có thể được thực thi theo trình tự. Ví dụ, database ban đầu có bảng Categories , sau đó chúng ta cần thêm cột SortOrder , rồi tạo bảng mới đ...