Khung kiểm tra đơn vị tốt nhất cho .NET là gì và tại sao? [đóng cửa]


26

Dường như với tôi rằng mọi người đều sử dụng NUnit mà không cần xem xét các tùy chọn khác. Tôi nghĩ rằng điều này là do:

  • Mọi người đều quen thuộc với nó rồi nên họ sẽ không phải học API mới.
  • Nó đã được thiết lập với máy chủ tích hợp liên tục của họ để hoạt động với NUnit.

Tôi có sai về điều này?

Tôi đã quyết định sử dụng xUnit cho một trong những dự án của riêng tôi gần đây và tôi thích nó! Nó có ý nghĩa hơn đối với tôi và về mặt khái niệm nó có vẻ như là một bước tiến rõ ràng từ NUnit.

Tôi muốn nghe ý kiến ​​về khung nào thực sự tốt nhất - không tính đến việc phải học nó hoặc cấu hình lại thử nghiệm tự động của bạn.


6
Hãy xác định tốt nhất. Rẻ nhất? Mã dễ nhất? ít dòng mã nhất cho mỗi bài kiểm tra? stackoverflow.com/questions/680298/ cường
Amir Rezaei

Xin lỗi, tôi có nghĩa là mạnh mẽ nhất, ổn định và trực quan, bất cứ điều gì. Tôi đang hỏi ý kiến ​​và lý do tại sao . Tôi để lại 'tốt nhất' cho trí tưởng tượng của người trả lời vì tôi cũng muốn xem những khía cạnh nào là quan trọng đối với mọi người.
Không ai

2
Nếu bạn có thể sắp xếp lại câu hỏi của mình thì có thể không sao, nếu không đây chỉ là một câu hỏi "danh sách X" không mang tính xây dựng. Xem sáu nguyên tắc cho các câu hỏi chủ quan mang tính xây dựng
ChrisF

2
"tốt nhất" là một điều ngu ngốc để hỏi - bởi vì rất hiếm khi một phần tốt nhất bởi vì nó sẽ phụ thuộc vào bối cảnh và một phần vì nó chắc chắn ở một mức độ chủ quan nào đó.
Murph

10
Murph. Đầu tiên, trang web này là dành cho các câu hỏi chủ quan. Thứ hai, tôi đang hỏi ý kiến ​​vì vậy tôi muốn thấy cách giải thích 'tốt nhất' của người khác. Và đừng gọi tôi là đồ ngốc.
Không ai

Câu trả lời:


15

MSTest

Cá nhân tôi sử dụng MSTest. NUnit thực sự rất hay, nhưng trong VS2010, MSTest đã được tích hợp hoàn toàn vào IDE và có các mẫu dự án đầy đủ cho nó. Đối với .NET, nếu bạn đang sử dụng 2010, thì tôi nghĩ MSTest là hướng đi (MSTest trong VS2008 tôi không nghĩ là ngang bằng) chỉ đơn giản là cho phạm vi bảo hiểm mã, chạy thử nghiệm và các công cụ khác có sẵn cho bạn ngoài cái hộp. (Nếu bạn sử dụng CodeRush hoặc R #, thì họ có các công cụ / công cụ kiểm tra thực sự tuyệt vời cho các khung kiểm tra khác)

Chỉnh sửa: Tôi đã chuyển sang XUnit. : D


Tôi đã bình chọn cho cả MbUnit / Galio và câu trả lời này. MbUnit / Galio đơn giản là tốt hơn, nhưng tay của họ bị trói khi chạy các bài kiểm tra MsTest, đối với một số lớp quan trọng trong thư viện .Net là cuối cùng và không thể mở rộng. Tuy nhiên, nếu bạn phải thực hiện tự động hóa GUI, thì UI được mã hóa và cuite.codeplex.com/documentation hoạt động trên MsTest, vì vậy người ta chỉ cần sử dụng chúng.
Công việc

2
Vấn đề tôi gặp phải với MSTest là nó không hỗ trợ kiểm tra dòng lệnh, đây có thể là vấn đề khi bạn muốn chạy các đơn vị thông qua CI.
CmdrTallen

1
Nunit hiện đã được tích hợp hoàn toàn vào VS phải không?
BKSpurgeon

Đúng vậy đấy. Xem xét điều này khoảng 6 tuổi, cá nhân tôi đã chuyển sang NUnit và sau đó đến XUnit. Cả hai (và những người khác) đều có các gói nuget đóng vai trò là bộ điều hợp để làm sáng chức năng VS giống như MSTest. Thành thật mà nói, MSTest có lẽ nằm ở cuối danh sách vào thời điểm này. Tôi sẽ bình chọn XUnit hoặc NUnit. những ngày này vì cả hai đều vững chắc, duy trì và hiện đại.
Ryan Hayes

14

Tôi đã bắt đầu sử dụng Gallio / MbUnit vài năm trước. Và các tính năng và đá quý mà nó cung cấp rất mạnh mẽ mà tôi chưa bao giờ hối tiếc về lựa chọn của mình. Trên thực tế, tôi hiện là một phần của nhóm phát triển dự án Gallio OSS; vì vậy tôi có thể đóng góp để làm cho nó thậm chí còn tuyệt vời hơn.

  • MbUnit có nhiều tính năng mạnh mẽ giúp cuộc sống nhà phát triển của tôi dễ dàng hơn (trình xác minh hợp đồng, nhà máy thử nghiệm, so sánh công bằng cấu trúc, kiểm tra tổ hợp, khung tạo dữ liệu, phân biệt văn bản, xác nhận xml, điểm mở rộng, v.v.)
  • Gallio cung cấp một nền tảng nhất quán để chạy tất cả các thử nghiệm của tôi với một công cụ báo cáo tốt. Tôi cũng thích thực tế là tôi có thể tích hợp các thử nghiệm từ các dự án OSS khác không sử dụng MbUnit và chỉ chạy chúng theo. Tích hợp liền mạch trong nhiều công cụ của bên thứ 3 cũng thuận tiện (R #, PoSh, dotCover, v.v.) Và khả năng mở rộng của cơ sở hạ tầng thật đáng kinh ngạc (ví dụ: tôi vừa hoàn thành việc viết bộ điều hợp thử nghiệm cho khung thử nghiệm C ++ không được quản lý riêng Nó sẽ là một phần của phiên bản tương lai sớm)

Các wiki chắc chắn là một tốt điểm bắt đầu khám phá Gallio và MbUnit v3. Nó bỏ lỡ một số chương nhưng nó yên tĩnh hữu ích.


Cấu trúc so sánh bình đẳng và khung tạo dữ liệu âm thanh tuyệt vời. MbUnit có thể thực hiện kiểm tra dựa trên dữ liệu - tức là đọc các tệp csv / xsd và sử dụng chúng làm đối số phương thức kiểm tra không? Đó là một trong những điểm thu hút chính của xunit đối với tôi.
Không ai

Chắc chắn rồi. ASAIK MbUnit là khung thử nghiệm đầu tiên cho .NET để giới thiệu thử nghiệm dựa trên dữ liệu. Nó có thể liên kết các phép đo kiểm tra với các nguồn dữ liệu bên trong ([Hàng], [Cột], v.v.) và với các nguồn dữ liệu bên ngoài ([CsvData], [XmlData], v.v.). Thêm chi tiết tại đây: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Yann Trevin

Họ đã khắc phục các vấn đề về hiệu suất mà họ gặp phải với Gallio và studio hình ảnh chưa? Là kẻ giết người thỏa thuận cho chúng tôi.
Wyatt Barnett

Tôi đã sử dụng MbUnit khi tôi làm việc cho một công ty nhỏ và điều đó thật tuyệt! Sau đó tôi đã sử dụng MsTest vì tôi phải làm và nó hoạt động tốt. Tôi vẫn thích viết mã rõ ràng hơn cấu hình các thiết lập dự án. Sự ủng hộ của công ty không giúp MSTest. Cho dù thiết kế xấu hay đẹp, bạn biết rằng bất cứ thứ gì ra khỏi MSFT đều sẽ được kiểm tra tốt.
Công việc

@YannTrevin Trạng thái của Gallio / MbUnit là gì? Tôi đã xem kho lưu trữ Google Code và dường như không có bất kỳ thay đổi nào gần đây. Là sự phát triển xảy ra ở một nơi khác hoặc dự án bị đình trệ?
Wesley Wiser 17/07/13

9

Chọn một và sử dụng nó có lẽ là bước quan trọng nhất ở đây.

Cá nhân tôi sẽ chọn NUnit vì một vài lý do. Đầu tiên và quan trọng nhất là hỗ trợ công cụ. Có một bổ trợ miễn phí cho Visual Studio 2010 và tất cả các plugin chính của bên thứ 3 đều hỗ trợ nó. Mỗi hệ thống xây dựng, tiện ích bảo hiểm thử nghiệm và máy chủ CI đều hỗ trợ nó. Trong nhiều trường hợp không có plugin. Ở cấp độ mã, nó có thể xử lý bất kỳ kịch bản nào tại thời điểm này - kiểm tra dựa trên dữ liệu, kế thừa, lớp kiểm tra trừu tượng, lớp kiểm tra chung, thiết lập, phá bỏ, v.v. Trong một chừng mực nào đó, chúng tôi có xUnit vì NUnit có quá nhiều tính năng và mạnh mẽ.

Ngoài NUnit, tôi nghĩ bạn có thể đưa ra một lập luận khá hay cho MBUnit + Gallio như Yann đã đề cập - đó là một khuôn khổ rất vững chắc. Một trong những điều bạn nên tránh nếu có thể sẽ là MSTest, trong đó có một vài sai sót nghiêm trọng IMHO. Lỗ hổng là một số hạn chế trong các lớp kiểm tra của bạn, chẳng hạn như không có sự kế thừa và phụ thuộc vào SKU phòng thu trực quan chuyên nghiệp hoặc tốt hơn. Bao gồm yêu cầu phòng thu trực quan được cài đặt trên máy chủ xây dựng để chạy thử nghiệm.


0

Một lý do là NUNIT trở thành tiêu chuẩn công nghiệp hơn xUnit. Nhưng cá nhân, tôi yêu xunit.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.