2008-10-06 35 views
9

Tôi quan tâm đến việc xem liệu tôi có thể cải thiện cách chúng tôi sử dụng NUnit trong một giải pháp Visual Studio có chứa hơn 30 dự án hay không.Làm thế nào để bạn cấu trúc các thử nghiệm NUnit của bạn trên một dự án lớn?

Trước tiên, bạn sẽ có một tập hợp các bài kiểm tra cho mỗi hội đồng trong giải pháp, hoặc bạn sẽ cố gắng giữ số lượng các hội đồng kiểm tra xuống? Tôi bắt đầu tạo ra nhiều hội đồng thử nghiệm, nhưng tôi nghĩ điều này khiến chúng tôi tốn rất nhiều thời gian xây dựng.

Thứ hai, bạn sử dụng chiến lược nào để quản lý các thử nghiệm dài hạn hoặc yêu cầu cấu hình môi trường đặc biệt? Tôi muốn viết một kịch bản MSBuild tự động hóa việc chạy thử nghiệm đơn vị của chúng tôi, nhưng nó cần phải bỏ qua các thử nghiệm sẽ mất quá nhiều thời gian hoặc sẽ không hoạt động trên máy xây dựng.

Trả lời

6

Để trả lời câu hỏi đầu tiên của bạn:

Bạn có thể sử dụng categories để giữ cho mọi thứ được tổ chức tại một hội duy nhất nếu đó là cách bạn muốn đi. Về việc liệu nó có bị cắt giảm về thời gian xây dựng hay không, tôi có thể đoán một cách nguy hiểm có lẽ, tôi không nghĩ đó là một số lượng khổng lồ mặc dù.

Để trả lời câu thứ hai của bạn:

Bạn có thể sử dụng categories[Explicit][Ignore] thuộc tính nói với NUnit đó kiểm tra để chạy, và đó kiểm tra bạn phải nói cho nó để chạy trước khi nó sẽ. Bạn cũng có thể muốn xem [Platform] hoặc một số thuộc tính khác, tùy thuộc vào chính xác yêu cầu của bạn về 'môi trường' là gì. Ví dụ:

Ví dụ: bạn có thể thêm thẻ Rõ ràng vào tất cả các thử nghiệm chạy dài của mình. Sau đó, bạn sẽ phải chạy thử nghiệm một cách rõ ràng, NUnit sẽ không chạy chúng tự động. Hoặc thêm tất cả các thử nghiệm này vào một danh mục, sau đó khi bạn chạy NUnit, hãy yêu cầu nó không rõ ràng chạy danh mục đó.

3

Đối với trường hợp của bạn tôi sẽ đặt nó xuống để một vài lựa chọn:

  • Củng cố các dự án hiện tại của bạn cho những người ít hơn, do đó củng cố các dự án thử nghiệm tương ứng cho họ - Hãy thử nghĩ nếu bạn thực sự cần 30 dự án (ví dụ, 30 hội đồng) hoặc nếu tốt hơn là chỉ cần kết hợp chúng để giảm bớt số lượng phụ thuộc và thời gian xây dựng.

  • Đặt xét nghiệm của bạn trong dự án tương ứng của họ - Trong khi điều này có thể gợi ra một phản ứng dữ dội, hãy nghĩ về nó: xem xét số lượng lớn các xét nghiệm liên quan đến các chi phí nhận được một hội đồng lớn hơn một chút có thể là đáng để giảm chi phí quản lý gấp đôi số lượng dự án bạn thực sự cần.

  • Kết hợp tất cả các bài kiểm tra đơn vị vào một vài dự án - Nếu bạn kiên quyết giữ cho mỗi bộ phận sạch sẽ và riêng biệt, bạn có thể chọn kết hợp tất cả các bài kiểm tra đơn vị, có thể liên quan đến nhau.

Do đó, bạn cũng có thể tạo cấu hình giải pháp không bao gồm kiểm tra đơn vị - nếu thời gian xây dựng là mối quan tâm lớn đối với bạn. Điều này đặc biệt hữu ích nếu bạn chỉ chạy thử nghiệm theo yêu cầu. Nếu bạn đang sử dụng tích hợp liên tục, nó không phải là một vấn đề: bạn có thể có nhiều cấu hình CI, một số trong đó bao gồm các bài kiểm tra xây dựng, một số thì không.

+1

Lưu ý về điểm thứ hai, bạn có thể thêm thuộc tính có điều kiện để tránh các phiên bản phát hành đầy hơi (Hoặc tạo chỉ thị TEST hoặc sử dụng DEBUG) Thuộc tính có thể được thêm ở cấp lớp hoặc phương thức. – Guvante

1

Đây là một câu hỏi hay và nêu lên một số lo ngại về việc tôi quản lý một loạt các bài kiểm tra đơn vị cho các dự án lớn, chạy dài.

Chiến lược của tôi là có một dự án thử nghiệm đơn vị cho từng dự án trong giải pháp của bạn là doanh nghiệp hoặc khung liên quan. Các bài kiểm tra đơn vị không phù hợp để kiểm tra các khía cạnh giao diện người dùng của một dự án và tôi thường để điều này cho thử nghiệm bị scipted. Dự án được xây dựng bằng cách sử dụng một máy chủ tích hợp liên tục (CI) được kích hoạt mỗi khi một nhà phát triển cam kết một đoạn công việc. Máy chủ CI cũng chạy tất cả các bài kiểm tra đơn vị cũng như tạo ra các số liệu thống kê vùng phủ sóng thử nghiệm đơn vị. Môi trường CI sử dụng MSBuild để xây dựng giải pháp.

Theo thời gian, bạn nên kiểm tra xem tất cả các bài kiểm tra đơn vị của bạn có cần thiết hay không. Rất nhiều nỗ lực thử nghiệm hồi quy sẽ chuyển sang thử nghiệm theo kịch bản và chi phí của việc duy trì các bài kiểm tra đơn vị có thể tốn kém. Lý tưởng nhất là tôi muốn tất cả các bài kiểm tra đơn vị được duy trì trong suốt vòng đời của dự án nhưng đôi khi chi phí bảo trì đôi khi có thể bị cấm. Như một quy tắc kiểm tra đơn vị ngón tay cái được duy trì cho các quy tắc kinh doanh và khung giải pháp nhưng không được duy trì cho giao diện người dùng, báo cáo hoặc quy trình làm việc. Rõ ràng điều này sẽ phụ thuộc vào các chi tiết cụ thể của dự án của bạn.

0

Cũng giống như một sang một bên, chúng tôi tìm thấy TestDriven.Net để trở thành một tuyệt vời VisualStudio add-in kết thúc trước cho NUnit, miễn phí cho sử dụng mã nguồn mở/sinh viên.

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