2011-06-28 26 views
21

Tương đương với [TestFixtureSetUp] của NUnit trong XUnit là gì? Chúng tôi đã khám phá và thấy rằng IUseFixture tương đương với [TestFixtureSetUp] nhưng nó không hoạt động như mong đợi. Như chúng ta đã khám phá (trong trường hợp nUnit), chúng tôi thấy rằng [TestFixtureSetUp] đã đánh dấu các phương thức để mã được thực hiện chỉ một lần trước khi tất cả các thử nghiệm trong lịch thi đấu đã được chạy. Trong xUnit tương đương với [TestFixtureSetUp] là IUseFixture như chúng ta đã khám phá. Nhưng trong quá trình thử nghiệm, chúng tôi thấy rằng phương pháp 'SetFixture' của IUseFixture đang được gọi trước mỗi Test (Không chỉ một lần cho tất cả các phương pháp).xUnit framework: Tương đương với [TestFixtureSetUp] của NUnit trong XUnit?

Vui lòng hướng dẫn chúng tôi rằng làm cách nào để chúng tôi có thể đạt được điều này trong xUnit. Ngoài ra, hãy sửa chúng tôi nếu chúng tôi hiểu nhầm điều gì đó. Cảm ơn

Trả lời

27

Không có tương đương trực tiếp là [TestFixtureSetUp] trong XUnit, nhưng bạn có thể đạt được chức năng tương tự. This page đưa ra bản dịch giữa NUnit và XUnit (cũng như một vài khung kiểm tra C# /. NET khác). Tuy nhiên, XUnit phần lớn đã loại bỏ các thiết lập/teardowns (this article giải thích lý do tại sao quyết định đó đã được thực hiện). Thay vào đó, bạn cần bộ kiểm thử để thực hiện một giao diện có tên là IUseFixture<T> có thể khởi tạo một số dữ liệu cho lịch thi đấu.

Bạn cũng có thể muốn đọc this overview of XUnit, được viết từ quan điểm ai đó đến từ nền NUnit/MbUnit.

+1

Cảm ơn Laepdjek. Chúng tôi đã có điểm. Chúng ta có thể khởi tạo T (của IUseFixture ) trong hàm khởi tạo (T's) của nó và nó sẽ được chia sẻ trong tất cả các phương thức thử nghiệm. –

+7

Với cách xUnit nói chung trực quan hơn nhiều so với các khuôn khổ thử nghiệm khác, tôi thấy thật ngạc nhiên khi giải pháp quá ... cồng kềnh. – nathanchere

+0

Sử dụng một hàm tạo tĩnh có thể là giải pháp tốt cho nhiều trường hợp sử dụng. –

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