40

Tôi nhận thấy rằng có nhiều câu hỏi cũ hơn giải quyết các câu hỏi chung của NUnit v MSTest cho các phiên bản của Visual Studio đến năm 2008 (chẳng hạn như this one).NUnit vs MSTest của Visual Studio 2010?

Microsoft có lịch sử nhận được mọi thứ ngay trong phiên bản thứ 3 của họ. Đối với MSTest, đó là VS2010.

Họ đã làm như vậy với MSTest? Bạn có sử dụng nó trong một dự án mới trong sở thích NUnit?

mối quan tâm cụ thể của tôi:

  • tốc độ
  • chạy thử nghiệm trong vòng CruiseControl.NET (hoặc dòng lệnh hoặc MSBuild nhiệm vụ)
  • báo cáo bảo hiểm mã từ CC.NET
  • bạn có thể chạy thử nghiệm MSTest trong chế độ gỡ lỗi

(Chúng tôi sử dụng ReSharper, vì vậy người kiểm tra không phải là vấn đề đối với chúng tôi. Chúng tôi đã sử dụng NUnit cho l ast vài năm. Chúng tôi không có TFS.)

+0

Xem [tùy chọn ưu tiên-ngày-cho-đơn vị-thử nghiệm-trong-vs-2010] (http://stackoverflow.com/questions/6339234/what-are-the-preferred- options-today-for-unit-testing-in-visual-studio-2010) – nawfal

Trả lời

31
  • tốc độ List item là như nhau, nhưng MSTest có thể chậm hơn một chút vì nó tạo ra thư mục cho chạy thử nghiệm mỗi khi
  • MSBuid và CC.Net là nỗi đau lớn. Bạn không thể chạy MSTest trên máy tính mà không cần VS trên đó (không chắc chắn về 100 năm 2010, nhưng với năm 2008 nó là như vậy)
  • không chắc chắn, xin lỗi
  • vâng bạn có thể, từ visual studio

My đề nghị là sau: nếu NUnit thỏa mãn bạn - sử dụng nó, hãy quên MSTest

+7

Đồng ý với tuyên bố cuối cùng. –

+1

@Preet. Tôi đồng ý. Cũng thay đổi MSTest được gắn liền với bản phát hành của Visual Studio – RichardOD

+0

+1 cho tuyên bố cuối cùng. Tôi đã tham gia một dự án và chúng tôi bắt đầu thử nghiệm đơn vị với MSTest (2008). Chúng tôi đã rất khó chịu với nó, chúng tôi chuyển sang NUnit. Tôi đang sử dụng VS 2010 và không có nhiều cải thiện so với VS 2008. – Mas

0

Tôi không biết nhiều về CruseControl.net, nhưng bạn có thể gỡ lỗi kiểm tra. Chúng tôi hiện không sử dụng TFS, và MSTest đang làm việc cho chúng tôi.

2

Không. Các vấn đề tương tự liên quan đến appdomains và giải quyết lắp ráp vẫn tồn tại. Tôi sẽ tránh trừ khi bạn muốn sự tốt lành mới cho thử nghiệm chức năng khác hoặc tích hợp với Team System.

0

Nếu bạn nghĩ rằng bạn sẽ chạy thử nghiệm ở chế độ 64 bit, hãy sử dụng NUnit. MsTest chỉ là x86.

+0

Cách khắc phục được mô tả ở đây, http://rupertrawnsley.blogspot.com/2011/04/mstest-and-64bit.html, nhưng dường như có thể bit kludgy? – AnneTheAgile

14

Để sửa một số thông tin cũ về chuỗi;

  1. nó có thể chạy thử nghiệm 64 bit trong năm 2010
  2. Từ VS2008 phía trước nó không phải là neccesary có MSTest tạo thư mục ANC Sao chép các tập tin nhị phân, chỉ cần triển khai vô hiệu hóa, trong năm 2010 thats mặc định nhưng bạn phải Thiết lập nó trong năm 2008
  3. 2010 MSTEST nhanh hơn nhưng vì khung kiểm tra tổng quát của nó cũng chạy các thử nghiệm tải/web/giao diện người dùng có sự thỏa hiệp trong thiết kế sẽ dẫn đến chậm hơn. Jamie Cansdale dường như đã xoay xở để có được sự gia tăng hoàn hảo với bản phát hành mới nhất của sự hỗ trợ của TestDriven.net cho MSTEST
5

Tôi đã sử dụng chủ yếu NUnit, một số xUnit và một số MSTest. Chúng có vẻ tương đương với chức năng, nhưng tôi không thích người thử nghiệm MSTest.Nó chạy trong phòng thu trực quan để nó hoặc là đám đông màn hình hoặc trên một màn hình khác nhận được trong cách mọi lúc tôi tab để phòng thu trực quan. (Tôi chạy NUnit trên một màn hình khác, nhưng nó không bao gồm tất cả mọi thứ trên màn hình đó mỗi khi tôi tập trung hình ảnh studio). Phải mất quá nhiều nhấp chuột để tìm hiểu thử nghiệm nào không thành công và tại sao.

NUnit có thể chạy ở chế độ nền cho đến khi thử nghiệm không thành công, tại thời điểm đó nó hiển thị cho bạn thông tin về kiểm tra vi phạm. Điều này có vẻ như lý tưởng để giữ cho màu đỏ/xanh/refactor diễn ra suôn sẻ.

0

Một sự khác biệt lớn giữa hai là MSTest tạo một bản sao của các DLL hiện tại mỗi khi nó chạy thử nghiệm. Nếu bạn đang làm TDD và chạy thử nghiệm của bạn thường xuyên, điều này có thể ăn lên rất nhiều không gian ổ đĩa cứng.

Nếu bạn đang sử dụng MSTest, bạn có thể thay đổi cài đặt này trong Công cụ> Tùy chọn> Công cụ kiểm tra> Kiểm tra thực thi. "Giới hạn số kết quả thử nghiệm cũ" được đặt thành 25 theo mặc định trong Visual Studio 2010. Tôi thường thay đổi thành 1.

0

MSUnit chạy các trường hợp thử nghiệm của bạn trong các điều kiện khác với môi trường thực thi thực tế. Cụ thể, các tệp được triển khai khác với các tệp được triển khai khi bạn chạy dự án thực tế của mình. Tuy nhiên, có [DeploymentItem] -Attribute để chỉ định tệp nào sẽ được MSUnit triển khai. Vì vậy, nếu ứng dụng của bạn phụ thuộc vào bất kỳ tập tin bên ngoài, chẳng hạn như

  • file cơ sở dữ liệu
  • cơ sở dữ liệu tập tin cấu hình
  • tập tin cấu hình ứng dụng
  • ...

sau đó MSUnit không phải là lựa chọn đúng, bởi vì các bài kiểm tra MSUnit không bao giờ bao gồm những gì hệ thống tập tin của bạn sẽ trông giống như trong môi trường thực thi. Các thiết lập tệp dự án Visual Studio cho việc triển khai tệp (Sao chép luôn luôn, Nội dung, v.v.) được bỏ qua bởi trình chạy MSUnit. Vì vậy, những cài đặt đó không thể được kiểm tra.