2011-08-18 49 views
6

Tại nơi làm việc của chúng tôi, chúng tôi có giải pháp C# .net chứa khoảng 50 dự án và khoảng 2000 thử nghiệm đơn vị. Sau khi thay đổi mã, chúng tôi yêu cầu chúng tôi chạy tất cả các thử nghiệm trong giải pháp trước khi đẩy các thay đổi của chúng tôi vào máy chủ xây dựng. Chạy tất cả các thử nghiệm có thể mất khoảng 10-15 phút. Tôi đã suy nghĩ - hey, có lẽ có thể có một số quá trình sẽ phân tích tất cả các thay đổi mã tôi đã thực hiện, và sau đó quyết định chỉ chạy các phương pháp thử nghiệm có liên quan. Nếu loại phân tích như vậy là có thể, thì thay vì chạy 2000 thử nghiệm, máy tính chỉ chạy 15 hoặc 100 thử nghiệm, thì chúng ta đang nói về sự gia tăng năng suất rất tốt và ít đau đầu hơn. Bất cứ ai cũng có bất kỳ ý tưởng về cách thực hiện điều này, hoặc nếu phần mềm đó có sẵn?Kiểm tra đơn vị phụ thuộc mã

Trả lời

2

C# Test Coverage Tool của chúng tôi có thể thực hiện việc này.

  1. Nó tăng dần chỉ là các tệp đã thay đổi kể từ lần chạy thử nghiệm cuối cùng.

  2. Nó có thể được sử dụng để theo dõi phạm vi kiểm tra cho từng bài kiểm tra đơn vị và tệp nào có liên quan. Khi một tập tin thay đổi, nó so sánh nó với phiên bản trước đó; nếu phương pháp tham gia vào một số đơn vị kiểm tra các thay đổi trước đó, nó sẽ xác định các kiểm tra đơn vị đó. Bạn phải tổ chức quá trình đó để liên kết chạy thử nghiệm với dữ liệu bảo hiểm và chạy lại các kiểm tra đơn vị được xác định, nhưng đó là một vấn đề nhỏ của kịch bản. Lý do cho việc này là để cho phép công cụ kiểm tra hoạt động với các khung kiểm tra tùy ý.

Bạn có thể làm điều đó trên máy chủ xây dựng để tiết kiệm thời gian. Quan trọng hơn, bạn có thể cung cấp cho mỗi nhà phát triển điều này, để anh ta có thể chạy chỉ các bài kiểm tra cần thiết để xác thực mã mà anh ta thay đổi, trước khi anh ấy kiểm tra các thay đổi.

5

Thật khó để nói điều gì phụ thuộc vào những gì trong môi trường đa dự án. Lý tưởng nhất là:

  • kiểm tra đơn vị của bạn sẽ thành sự thật đơn vị kiểm tra, và năm 2000 của họ nên chạy trong có lẽ 20 giây.
  • Các thử nghiệm dài hạn của bạn sẽ được thiết lập trên phiên bản liên tục trên máy chủ xây dựng của bạn, vì vậy bạn sẽ vẫn nhận được thông báo khá nhanh rằng bạn đã làm mọi thứ rối loạn nếu bạn bỏ lỡ bất cứ điều gì, nhưng bạn có thể đủ khả năng để chỉ là có nhiều lựa chọn hơn khi chỉ chạy các thử nghiệm mà bạn nghĩ rằng bạn có thể đã bị ảnh hưởng với các thay đổi mã của bạn trước khi bạn cam kết.
+5

+1 để tách các bài kiểm tra đơn vị khỏi các bài kiểm tra tích hợp. Xem http://stackoverflow.com/questions/61400/what-makes-a-good-unit-test – TrueWill

2

Visual Studio 2010 Premium và Ultimate có công cụ "Tác động thử nghiệm" thực hiện chính xác điều đó.

+0

Thú vị liệu nó có thể nhận các thử nghiệm NUnit và không chỉ MSTests – sll

+0

+1 @DBM: Điều tuyệt vời không bao giờ biết trước khi nó , http://blogs.msdn.com/b/phuene/archive/2009/12/07/test-impact-analysis-in-visual-studio-2010.aspx – sll

+0

@sllev chỉ giới hạn ở các thử nghiệm MSTest. – ckittel

0

Trong môi trường của chúng tôi, chúng tôi sử dụng NCrunch http://www.ncrunch.net/

Nó xây dựng các dự án và chạy các bài kiểm tra đơn vị trong nền sử dụng nhiều chủ đề. Nó thông báo cho bạn về các bài kiểm tra đơn vị không thành công một cách dễ chịu.

NCrunch thực hiện khá nhiều thứ bạn cần. Có một cái nhìn.

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