2010-09-24 25 views
7

Chúng tôi có vài trăm bài kiểm tra, với một vài chục trong số đó được đánh dấu với các thuộc tính sau: [TestFixture] [Rõ ràng] [Danh mục ("IntegrationTests")] để chúng chỉ được chạy trong đêm của chúng tôi xây dựng tự động. Các TestFixtures còn lại không có Category được chỉ định (và không được đánh dấu là Explicit).Khi chạy NUnit và chỉ định một danh mục, tất cả các bài kiểm tra chưa được phân loại có được bao gồm không?

Dưới đây là nhiệm vụ Nant chúng tôi đang chạy để thực hiện các bài kiểm tra của chúng tôi:

<nunit2> 
    <test> 
     ... 
     <categories> 
      <include name="IntegrationTests" /> 
     </categories> 
     ... 
    </test> 
</nunit2> 

này, tất nhiên, sẽ không thực hiện bất kỳ cuộc thử nghiệm chưa được phân loại.

Tôi muốn để có thể làm điều gì đó như thế này:

<nunit2> 
    <test> 
     ... 
     <categories> 
      <include name="*" /> 
      <include name="IntegrationTests" /> 
     </categories> 
     ... 
    </test> 
</nunit2> 

nơi mà tất cả các bài kiểm tra chưa được phân loại sẽ được chạy cùng với các bài kiểm tra hội nhập. Điều này có thể không? Nếu vậy, cú pháp là gì?

(Lưu ý: Tôi đang tìm giải pháp NAnt, như trên hoặc giải pháp dòng lệnh NUnit. Tôi chắc chắn có thể chạy NUnit hai lần với các tùy chọn khác nhau hoặc đặt Danh mục trên tất cả các TestFixtures của tôi. tôi sẽ sử dụng nếu tôi phải làm vậy, nhưng sẽ rất thú vị khi có thể chỉ định trực tiếp các bài kiểm tra chưa được phân loại.)

Trả lời

0

Không, cho bạn hoàn cảnh không có cách nào để làm những gì bạn muốn trong một lần chạy NUnit. Nếu bạn đã tắt thuộc tính rõ ràng, bạn có thể làm điều đó trong một lần chạy đơn lẻ bằng cách loại trừ tất cả các bài kiểm tra được phân loại mà bạn không muốn.

Về cơ bản, nếu bạn chuyển sang danh mục, tất cả các bài kiểm tra của bạn sẽ được phân loại.

+0

Tôi sẽ ổn với điều đó nếu có cách đảm bảo rằng tất cả các bài kiểm tra được phân loại? – bacar

8

Tôi đang ở trong cùng một chiếc thuyền và đã cảm thấy thất vọng cho đến khi tôi phát hiện ra rằng thuộc tính Danh mục có thể được áp dụng không chỉ cho một thử nghiệm hoặc thử nghiệm, mà là toàn bộ hội đồng.

Tôi có hai bài kiểm tra với các bài kiểm tra mà tôi chạy cục bộ và một bài kiểm tra khác chỉ chạy trên máy chủ xây dựng. Tôi đã thêm thuộc tính này vào AssemblyInfo.cs trong hai dự án đầu tiên: [assembly: NUnit.Framework.Category("Always")]. Dự án thử nghiệm thứ ba sử dụng các thành phần danh mục như [Explicit, Category("PublicDatabase")] khi bạn mô tả. Máy chủ xây dựng gọi NUnit với /include=Always,PublicDatabase và có kết quả mong muốn: tất cả các thử nghiệm trong hai hội đồng đầu tiên chạy, và chỉ các bài kiểm tra PublicDatabase trong lần chạy lắp ráp thứ ba.

Khi tôi chạy NUnit cục bộ trên hai dự án đầu tiên, tôi chỉ chạy nó trên các hội đồng cá nhân, và không phải chỉ định danh mục nào cả.

+0

IIUC, điều này sẽ không chỉ chạy "tất cả các bài kiểm tra chưa được phân loại". Nó cũng sẽ chạy các test _all_ (từ assembly có category assembly), bao gồm bất kỳ test nào trong đó có một thể loại rõ ràng (tôi giả sử các category là additive)? – bacar