2010-07-05 36 views
17

Có ba cách để tổ chức các bài kiểm tra đơn vị: Kiểm tra mỗi Lịch thi đấu, Lớp học hoặc Tính năng. Nhưng thuộc tính NUnit cho TestClass được gọi là TestFixture. Có lý do lịch sử nào cho điều đó không?Tại sao testFixture thay vì TestClass?

Trả lời

11

Lý do lịch sử chính là NUnit bắt đầu cuộc sống như một cổng thẳng từ JUnit và junit gọi nó là vật cố thử nghiệm.

NUnit 1.0 trước thời gian của tôi nhưng tôi đã được yêu cầu bắt đầu bằng cách đổi tên tất cả các tệp .java trong JUnit thành tệp .cs và cố gắng biên dịch. Nó đã được cố định từ đó và một giao diện người dùng đã được thêm vào. Khi tôi tham gia vào NUnit 2.0, vẫn còn một phương thức trong NUnit 1.0 được gọi là IsVisualAgeForJava vì JUnit có hành vi đặc biệt cho điều đó vào thời điểm đó.

Trong NUnit 2.0, mục tiêu của chúng tôi là làm cho NUnit thêm .NET. Vì vậy, chúng tôi đã thêm các thuộc tính và một loạt các nội dung khác. Tất cả chúng tôi đến từ nguồn gốc java và đã làm việc với JUnit trong nhiều năm. Có vẻ như khá tự nhiên khi sử dụng [TestFixture].

4

Bây giờ bạn hỏi về nó, tôi chỉ tìm kiếm nó.
Một vật cố định là trạng thái cơ bản cố định phải được thiết lập trước khi chạy thử, sao cho kết quả có thể dự đoán và lặp lại được. Trong các khuôn khổ thử nghiệm đơn vị, chúng tôi sử dụng các thuộc tính/phương pháp SetUp và TearDown để tạo/phá hủy vật cố thử nghiệm (ví dụ: khởi tạo các biến mẫu với các đối tượng phù hợp).

13

Tôi tôn trọng phản ứng của Mike Two, nhưng tôi sẽ khẳng định rằng nhóm NUnit nhận được điều này rất sai, và việc sử dụng [TestFixture] là một mụn cóc ngữ nghĩa khi đối mặt với NUnit. Lớp kiểm tra không phải là vật cố định. Từ những gì tôi đã đào tạo liên quan đến JUnit, tôi đã không tìm thấy bất kỳ tham chiếu đến một lớp thử nghiệm như một trận đấu thử nghiệm, cũng như tôi không tìm thấy nhiều cuộc thảo luận về "thử nghiệm đồ đạc" đề cập đến các lớp học thử nghiệm. Thay vào đó, tất cả các cuộc thảo luận JUnit/xUnit về đồ đạc liên quan đến thiết lập và teardown, mà, tất nhiên, là những phương pháp phổ biến được sử dụng để thiết lập đồ đạc thử nghiệm thực tế.

Lưu ý rằng trong NUnit 2.5, bạn có thể xóa chú thích [TestFixture].

Cập nhật: (July 2012)

Tôi chỉ đọc Sách dưa chuột và trên trang 99, tác giả Matt Wynne giải thích nguồn gốc của việc sử dụng "vật cố." Tôi trích dẫn:

Có một truyền thống lâu đời (đến từ thế giới phần cứng, nơi thử nghiệm thiết bị bắt nguồn) gọi liên kết giữa hệ thống kiểm tra và hệ thống đang thử nghiệm. Đây là vai trò "mã keo" mà chúng tôi đã đề cập trong cuốn sách này là mã tự động hóa. Khung kiểm tra FIT sử dụng ý nghĩa của thuật ngữ này. Một số công cụ kiểm tra đơn vị (chẳng hạn như NUnit) đã làm rối loạn thêm vấn đề bằng cách tham khảo chính lớp vỏ thử nghiệm như một vật cố định. Rất nhiều cho một ngôn ngữ phổ biến! (Wynne & Hellesoy, 2012)

+0

Tôi đồng ý với bạn. Đó là một sai lầm. Một khi nó là có nó rất khó để lấy lại. Tuy nhiên tôi nghĩ rằng có hành vi tương tự trong JUnit vào thời điểm đó. Tôi có thể hoàn toàn sai. Đây là tất cả vào đầu năm 2002 và tôi có thể nhớ nó không chính xác. Dù bằng cách nào bạn cũng chính xác trong khẳng định của bạn rằng một lớp kiểm tra và một vật cố định là những thứ khác nhau. –

+2

Cảm ơn Mike Two, tôi luôn bị cuốn hút bởi lịch sử tầng hầm đằng sau các dự án trong thủ công của chúng tôi. Tôi cũng nhận ra rằng nếu tôi không thích nó, tôi không nên rên rỉ nhưng gửi một bản vá. Tôi tự hỏi liệu tôi có quá đáng kể vì không ai khác đã thực hiện thay đổi này với NUnit cho đến nay. – ybakos

+0

Tôi đã xem xét thay đổi nó một vài lần. Tôi đã đánh một bức tường các vấn đề với khả năng tương thích ngược.Tôi đã ngừng hoạt động NUnit thường xuyên nhiều năm trước vì vậy tôi không có ý định thay đổi nó trong tương lai. –

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