2012-03-19 32 views
23

Sự khác nhau giữa nUnitxUnit.net ở đâu? Điểm phát triển của hai người trong số họ, không chỉ là một?nUnit vs xUnit?

Tôi đã đọc rằng xUnit đang được phát triển bởi nhà phát minh của nUnit:

xUnit.net là một công cụ kiểm tra đơn vị cho .NET Framework. Viết bởi bản gốc nhà phát minh của NUnit

Mặt khác:

NUnit là một khuôn khổ đơn vị thử nghiệm cho tất cả các ngôn ngữ Net .. việc phát hành sản xuất hiện tại, phiên bản 2.6 , là bản phát hành chính thứ bảy của công cụ kiểm tra đơn vị xUnit này

Vậy sự thật là ở đâu?

+1

http://xunit.codeplex.com/wikipage?title=WhyDidWeBuildXunit&referringTitle=Home – wiero

+2

Như @Joey đã chỉ ra - đây không phải là một bản sao thẳng của câu hỏi liên quan. Trong trường hợp này, OP đã hiểu lầm một cái gì đó về cơ bản; cụ thể là sự khác biệt giữa xUnit.net - công cụ kiểm tra đơn vị và đơn vị * x * - thuật ngữ tổng quát cho lớp của các khung kiểm thử đơn vị (nUnit, jUnit, v.v.). Bỏ phiếu để mở lại. –

Trả lời

19

Bạn đang bối rối tên của một công cụ duy nhất (xUnit.net) với tên của một lớp học toàn bộ khuôn khổ kiểm tra đơn vị (xUnit, các x đề cập đến một ngôn ngữ/môi trường, ví dụ như JUnit, NUnit, ...).

+1

Đáng tiếc điều này đã đóng, vì nó không phải là một bản sao thẳng - bạn là đúng - OP đã nhầm lẫn giữa hai thuật ngữ gần như giống nhau. –

+0

Tôi đã hơi thay đổi tiêu đề, để đảm bảo rằng sẽ không có sự nhầm lẫn. – Ruslan

+1

Tôi đã không đi theo tiêu đề mà là các phân đoạn được đánh dấu của các trích dẫn trong câu hỏi của bạn. Nhưng có lẽ tôi đã hiểu lầm bạn. – Joey

0

xUnit Ưu điểm: xUnit theo khái niệm mới bằng cách tránh các mehtod cũ "SetUp" và "TearDown". Nó buộc chúng ta sử dụng IDisposable và constructor vì chúng ta nên làm nó như là các nhà phát triển .NET. Ngoài ra xUnit có khái niệm chia sẻ ngữ cảnh rõ ràng.

xUnit Cons: Tính khả dụng để có ngữ cảnh thử nghiệm chưa được triển khai.

0

Một lợi ích của xUnit là nó tìm thấy các bài kiểm tra trong các lớp khác nhau, nó chạy chúng song song. Điều này có thể tiết kiệm rất nhiều thời gian nếu bạn có nhiều trường hợp kiểm tra.

Bạn có thể dĩ nhiên tắt chức năng này, hoặc kiểm soát hoạt động của mình (số đề, chủ đề cho mỗi lớp, kiểm tra mỗi lắp ráp, vv

Check-out này sample solution with two test projects, one using xUnit the other NUnit

Bạn có thể đọc thêm về các xét nghiệm song song trong xUnit here

6

câu trả lời là một chút cũ vì vậy tôi quyết định cung cấp một bản cập nhật: Tại thời điểm viết này trả lời các phiên bản mới nhất NUnit là v3.5 và xUnit.net là v2.1

012.

Cả hai khung đều tuyệt vời, cả hai đều hỗ trợ chạy thử song song (theo một cách khác), NUnit đã được sử dụng rộng rãi từ năm 2002, được sử dụng rộng rãi, được ghi chép và có một cộng đồng lớn, trong khi xUnit.net là hiện đại hơn, nhiều TDD tuân thủ và mở rộng hơn và cũng có xu hướng phát triển cốt lõi .net. Nó cũng được ghi lại.

Ngoài ra, sự khác biệt chính tôi nhận thấy là cách xUnit.net chạy các phương pháp thử nghiệm.Vì vậy, trong NUnit, chúng tôi có một lớp thử nghiệm và một tập hợp các phương pháp thử nghiệm trong đó. NUnit tạo một thể hiện mới của lớp thử nghiệm và sau đó chạy tất cả các phương thức kiểm tra từ cùng một cá thể. Trong khi đó, xUnit.net tạo ra một thể hiện mới của lớp thử nghiệm cho mỗi phương thức thử nghiệm.. Do đó, người ta không thể sử dụng các trường hoặc thuộc tính để chia sẻ dữ liệu giữa các phương pháp thử nghiệm là một thực hành không tốt, vì các phương pháp thử nghiệm của chúng tôi sẽ phụ thuộc lẫn nhau mà không được chấp nhận trong TDD. Vì vậy, nếu bạn sử dụng xunit.net bạn có thể chắc chắn rằng phương pháp thử nghiệm của bạn là hoàn toàn bị cô lập.

Nếu bạn sẵn sàng chia sẻ một số dữ liệu trong các phương pháp thử nghiệm của mình, xUnit sẽ cho phép bạn làm như vậy. Vì vậy, theo mặc định, tất cả các phương pháp thử nghiệm được phân lập hoàn toàn, nhưng bạn có thể phá vỡ sự cô lập này trong các trường hợp cụ thể có chủ ý. Tôi thích thái độ này, đó là lý do tại sao tôi thích nó hơn.

Theo sự khác biệt được đề cập về việc khởi tạo lớp thử nghiệm Tính năng chạy thử nghiệm song song hoạt động khác nhau trong 2 khung công tác. Trong NUnit.net, các phương thức thử nghiệm của một lớp đơn lẻ sẽ chạy trong một luồng đơn (không song song), nhưng nó chạy các bài kiểm tra mỗi lớp trong một luồng riêng biệt. Trong khi xUnit.net không có giới hạn song song vì nó tạo ra một cá thể mới cho mỗi phương thức thử nghiệm.

+0

Để biết thêm chi tiết, hãy xem bài đăng mới nhất của tôi: https://codopia.wordpress.com/2017/02/20/xunit-net-vs-nunit-a-pragmatic-comparison/ – akazemis

Các vấn đề liên quan