2010-01-19 38 views
5

Tôi vừa phát hiện ra rằng tôi đã nhận được gấp đôi số lần chạy thử nghiệm mà tôi đáng lẽ phải nhận được. Phát hiện ra nó khi một thử nghiệm bị phá vỡ và tôi đã có hai thất bại kiểm tra giống hệt nhau. Thử nghiệm tương tự, cùng mọi thứ. Đã cho tôi khá bối rối, nhưng quản lý để thu hẹp nó xuống một lớp học thử nghiệm nhất định đó là một lớp học một phần.NUnit, TestDriven.Net: Kết quả kiểm tra trùng lặp với các lớp kiểm tra từng phần

Lý do đó là một phần lớp học là tôi đã chia lớp kiểm tra thành hai, chỉ để làm cho nó sạch hơn một chút. Lớp học được kiểm tra có một phương pháp nhất định yêu cầu một loạt các bài kiểm tra và tôi nghĩ rằng nó sẽ sạch sẽ hơn nếu có trong một tệp riêng biệt. Nhưng vì có một hoặc hai phương thức trợ giúp được sử dụng, tôi đã tìm ra rằng tôi chỉ có thể làm cho lớp đó trở thành một phần vì vậy cả hai tệp vẫn có quyền truy cập vào các phương thức đó.

Khung kiểm tra là NUnit và các thử nghiệm được chạy bằng cách sử dụng TestDriven.Net. Chạy các bài kiểm tra cả hai bên trong một phương pháp thử nghiệm (báo cáo hai bài kiểm tra được thông qua thay vì một), trên lớp (có hai lần số bài kiểm tra được thông qua) và trên toàn bộ dự án thử nghiệm.

Được quản lý để khắc phục vấn đề bằng cách tạo các lớp không phải một phần và chỉ sao chép các phương thức trợ giúp nhỏ (có thể di chuyển chúng sang lớp trợ giúp riêng biệt hoặc sau này).

Bây giờ ... tại sao điều này lại xảy ra? Tôi nghĩ rằng các lớp học một phần được biên soạn thành một lớp duy nhất? Đây có phải là một vấn đề với các lớp học một phần nói chung, NUnit, Test-Driven.net hoặc một cái gì đó hoàn toàn khác nhau?

Trả lời

2

Bạn có thể đặt thuộc tính [TestFixture] trong cả hai tệp của một phần lớp. Điều này sẽ gây ra TestFixture để được phát ra hai lần trong định nghĩa lớp IL và NUnit sẽ chạy cùng một mã kiểm tra hai lần. Bạn chỉ nên thêm [TestFixture] vào một trong các tệp cho lớp học một phần của mình.

+0

Ooooh. Điều đó có thể có một cái gì đó để làm với nó có. Nhưng tại sao thuộc tính 'TestFixture' được thêm hai lần vào một lớp? Điều đó không có ý nghĩa ... hay là một lý do để điều đó có thể xảy ra? – Svish

+0

Có để kiểm tra nó ngay bây giờ, và loại bỏ các 'TestFixture' thuộc tính từ một trong các lớp học một phần cố định vấn đề :) – Svish

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