Việc chọn một khung thử nghiệm cho lõi .NET có thể khó hiểu và khó khăn. Khung thử nghiệm nên được thiết kế và lựa chọn để phù hợp với các yêu cầu và nhu cầu của một dự án cụ thể.
Các khung thử nghiệm có sẵn trong nhiều tùy chọn đa dạng. Hai khung và công cụ phổ biến và phổ biến nhất để kiểm tra đơn vị trong C# là Microsoft Unit Test và xUnit.
Các nội dung chính
- Microsoft Unit Test là một khung thử nghiệm được thiết kế dành riêng cho các ứng dụng .NET, trong khi Xunit là một khung nguồn mở linh hoạt hơn, tương thích với nhiều nền tảng.
- Xunit hỗ trợ thực hiện kiểm tra song song, cải thiện hiệu suất kiểm tra, trong khi Microsoft Unit Test không cung cấp tính năng này.
- Microsoft Unit Test dựa trên các thuộc tính như [TestMethod] và [TestClass], trong khi Xunit sử dụng các thuộc tính [Fact] và [Theory] cho các trường hợp thử nghiệm.
Bài kiểm tra đơn vị của Microsoft so với xUnit
Microsoft Unit Test và xUnit là các khung thử nghiệm để tạo và chạy thử nghiệm tự động trong các ứng dụng .NET. Microsoft Unit Test là một khung thử nghiệm tích hợp trong Visual Studio. xUnit là một khung thử nghiệm nguồn mở với nhiều tính năng và tính linh hoạt hơn.

MSTest là viết tắt của Microsoft Unit Test. Tên khác của khung là Visual Studio Unit Testing Framework. Việc vận chuyển khung được thực hiện cùng với Visual Studio.
Khung có thể được cài đặt từ NuGet GUI hoặc thậm chí thông qua 'Các lệnh bảng điều khiển trình quản lý gói NuGet'.
Mặt khác, xUnit dựa trên khuôn khổ của .NET. 'x' của xUnit là viết tắt của loại ngôn ngữ lập trình được sử dụng trong khung. Khung xUnit có thể được cài đặt từ GitHub.
Khả năng mở rộng và mở rộng của xUnit cao hơn hầu hết các framework khác.
Bảng so sánh
Các thông số so sánh | Bài kiểm tra đơn vị của Microsoft | xUnit |
---|---|---|
Khởi tạo và hủy khởi tạo | [TestInitialize] và [TestCleanup] để khởi tạo và hủy khởi tạo tương ứng | Có thể được khởi tạo bằng cách sử dụng hàm tạo của lớp thử nghiệm và có thể được hủy khởi tạo bằng cách sử dụng giao diện Idisposable |
Thực hiện kiểm tra song song | Thực thi song song được cung cấp ở cấp lớp cũng như cấp phương thức | Thực thi song song được cung cấp bằng cách thực hiện số lượng luồng 'n' hoặc cho phép các lớp kiểm tra vào một bộ sưu tập kiểm tra duy nhất |
Cô lập các bài kiểm tra | Cung cấp sự cô lập thấp hơn | Cung cấp cách ly tốt hơn |
Khả năng mở rộng | Tương đối ít mở rộng | Có thể mở rộng hơn vì nó sử dụng các thuộc tính như [Thực tế] và [Lý thuyết] |
Cơ chế khẳng định | Sử dụng [ExpededException] | Sử dụng Assert.Throws |
Bài kiểm tra Microsoft Unit là gì?
Microsoft Unit Test (MSTest), còn được gọi là Visual Studio Unit Testing Framework, là khung kiểm tra mặc định. Công cụ này được vận chuyển cùng với Visual Studio. Ban đầu, công cụ này được sử dụng như một đường chung để thực hiện các bài kiểm tra.
Khung phục vụ cho các công cụ cần thiết để xác thực, kiểm tra và xác minh mã nguồn được cung cấp. Thời gian thực hiện trong MSTest ít hơn vì các bài kiểm tra có thể thực thi và chạy song song.
Khung nhận dạng bài kiểm tra thông qua một số chú thích và thuộc tính với sự trợ giúp của các mã kiểm tra khác nhau. Một số thuộc tính phổ biến là [TestInitialize], [TestCleanup], [TestMethod] và các thuộc tính khác.
Công cụ này có sẵn gói Visual Studio. Việc chạy thành công Bài kiểm tra Đơn vị của Microsoft chỉ phụ thuộc vào việc cài đặt Bộ điều hợp MSTest.
Quá trình cài đặt Microsoft Unit Test thông qua NuGet GUI hoặc thậm chí thông qua 'các lệnh bảng điều khiển Trình quản lý gói NuGet.'
Quá trình cài đặt gói được thực hiện bằng cách sử dụng lệnh 'Cài đặt-Gói' và đối số. Hành vi kiểm tra của người dùng có thể được xác định trong Microsoft Unit Test bằng cách phục vụ cho một số đối số đầu vào.
Các gói như MSTest.TestAdapter, Microsoft.NET.Test.Sdk và MSTest.TestFramework rất cần thiết cho hoạt động của framework. MSTest V1 ban đầu không phải là nguồn mở; sau đó, V2 được ra mắt dưới dạng nguồn mở.
Microsoft Unit Test là đa nền tảng. Nó cho phép triển khai nhiều mục tiêu thử nghiệm khác nhau trên các nền tảng như Windows, Linux hoặc Mac. Nó cũng có một điều khoản về khả năng mở rộng của các thuộc tính và xác nhận tùy chỉnh.
xUnit là gì?
xUnit là một công cụ kiểm tra được sử dụng cho .NET Framework. Nó là một đơn vị nguồn mở và miễn phí. Giấy phép của xUnit theo Giấy phép Apache 2.0. Mã nguồn có sẵn trên GitHub.
Công việc của xUnit.net là với CodeRush, Xamarin, TestDriven.NET và ReSharper. Các tác giả là James Newkirk và Brad Wilson.
Các nhà phát triển của xUnit.net là Outercurve Foundation, Microsoft và .NET Foundation. Công cụ được phát hành vào ngày 29 tháng 2018 năm 2.4.1, trong phiên bản XNUMX. Công cụ này được viết độc quyền bằng ngôn ngữ C#.
Các hệ điều hành tương thích với xUnit là macOS, Windows và Linux. Mono, .NET Framework và .NET Core là những nền tảng hỗ trợ công cụ kiểm tra đơn vị. Công cụ này tập trung vào cộng đồng.
xUnit được viết bởi cùng một cá nhân là người phát minh ra NUnit v2. Sự ra đời của công cụ này là để giúp các lập trình viên viết các bài kiểm tra tốt hơn và rõ ràng hơn.
Khung thử nghiệm cũng đã được đưa ra phù hợp với nền tảng .NET sau khi giới thiệu công cụ. xUnit đã xây dựng một kiến trúc dành cho các lập trình viên, đặc biệt là để phát triển Test-Driven.
Phần mở rộng hỗ trợ thử nghiệm khác, chẳng hạn như thử nghiệm chấp nhận tự động, cũng được bao gồm trong công cụ xUnit.
xUnit có thể dễ dàng mở rộng. Công cụ này được tải xuống từ thư viện NuGet. Công cụ này cho phép phong cách thử nghiệm độc đáo và khác biệt.
Công cụ này có thể được khởi tạo bằng cách sử dụng hàm tạo của lớp thử nghiệm và có thể được khởi tạo lại bằng cách sử dụng giao diện Idisposable. xUnit được coi là một công cụ thử nghiệm mạnh mẽ và có thể mở rộng.
Sự khác biệt chính giữa Microsoft Unit Test và xUnit
- Microsoft Unit Test ít tập trung vào cộng đồng hơn và ít tinh vi hơn, trong khi xUnit tập trung vào cộng đồng hơn và phức tạp hơn.
- Thuộc tính để đánh dấu một phương pháp kiểm tra hoặc kiểm tra riêng lẻ là [TestMethod] trong Microsoft Unit Test trong khi [Fact] trong xUnit.
- Thuộc tính để chỉ ra một nhóm các bài kiểm tra đơn vị của một lớp là [TestClass] trong bài kiểm tra Đơn vị của Microsoft, trong khi không có thuộc tính nào như vậy trong khung xUnit.
- Microsoft Unit Test không chứa các thuộc tính thiết lập lịch thi đấu và chia nhỏ, trong khi ICollectionFixture được sử dụng trong xUnit cho mỗi bộ sưu tập.
- Microsoft Unit Test ban đầu không được khởi chạy dưới dạng khung thử nghiệm nguồn mở, trong khi xUnit được khởi chạy dưới dạng thử nghiệm nguồn mở.