2010-05-27 2 views
12

Tôi đã tạo một bộ thử nghiệm trong NUnit tham chiếu đến một số thiết bị thử nghiệm đơn vị riêng biệt trong các cụm khác nhau.NUnit không chạy thử nghiệm Suite

Tôi đã dùng qua khá nhiều mã ví dụ từ NUnit's docs:

namespace NUnit.Tests 
{ 
    using System; 
    using NUnit.Framework; 
    using System.Collections; 

    public class AllTests 
    { 
     [Suite] 
     public static IEnumerable Suite 
     { 
      get 
      { 
       ArrayList suite = new ArrayList(); 
       suite.Add(new VisionMap.DotNet.Tests.ManagedInteropTest.DotNetUtilsTest()); 
       return suite; 
      } 
     } 
    } 
} 

Mục tiêu của tôi là để thêm một số xét nghiệm để danh sách ở trên để tôi có thể chạy chúng tất cả trong một lô.

Nhưng khi tôi cố gắng để nạp DLL trong GUI NUnit của tôi có được điều này: alt text

Tôi đang làm gì sai?

Tôi biết rằng các tài liệu nói GUI sẽ không chạy các bộ ứng dụng, nhưng tôi cũng đã thử bảng điều khiển. Ai đó có thể vui lòng cho tôi biết Suites nào là tốt và tôi có thể sử dụng chúng để đạt được mục tiêu của mình không?

Tôi đang sử dụng nunit 2.5.0.9122.

Sửa

Vâng, không có câu trả lời là sắp tới. Tôi tìm thấy một giải pháp thay thế cuối cùng: Danh mục. Tôi nhóm đồ đạc thử nghiệm bằng cách cho họ các loại thích hợp và sau đó tôi có thể chạy một tập con của chúng theo lô, trong khi vẫn bỏ qua một tập hợp con khác.

Tuy nhiên, rất kỳ lạ rằng tính năng Suite này dường như đã bị hỏng hoàn toàn.

+0

Tôi đã thêm tiền thưởng với hy vọng ai đó giải thích cho tôi những gì Suites phù hợp hoặc cách tôi có thể tạo một loạt các thử nghiệm từ trong một vài hội đồng mà không cần chạy tất cả chúng từ dòng lệnh. –

+0

Một sự xấu hổ tiền thưởng không giúp được ... Câu trả lời duy nhất được đăng không đến gần để trả lời câu hỏi. –

+0

Tôi luôn sử dụng các loại cho loại điều này. Nó dường như được hỗ trợ rộng rãi hơn. –

Trả lời

3

Suites không thực sự cần thiết cho bất cứ điều gì nhiều ở tất cả những ngày này. Nếu bạn chỉ muốn sử dụng chúng để xác định những thử nghiệm nào và không chạy thì việc này tốt hơn nhiều với các thuộc tính Category. Đây là những gì bạn đã làm và nghe như giải pháp tốt nhất cho vấn đề của bạn.

Tuy nhiên, để tham khảo của người khác và tương lai, bạn có thể vẫn sử dụng Suites in Nunit. Bạn phải chạy chúng từ giao diện điều khiển và chỉ sử dụng tùy chọn/fixture. Ví dụ, để chạy bộ ứng dụng bạn đã nêu ở trên, bạn muốn chạy (giả sử lớp học của bạn đã được biên soạn thành một lắp ráp AllTests.dll):

nunit-console /fixture:AllTests.Suite AllTests.dll 

Bạn sẽ không thấy bất kỳ bằng chứng về hoặc cách để chạy dãy phòng trong GUI - điều này được ghi chú trong tài liệu. Tuy nhiên, bạn có thể chạy chúng từ giao diện điều khiển được tích hợp vào GUI bằng các lệnh như trên.


Tôi sử dụng các bộ trong một số thử nghiệm của mình vì tôi có một số trường hợp sử dụng lẻ yêu cầu tôi đôi khi cần chuyển đối số cho phương pháp thử nghiệm của mình. Tôi làm điều này bằng cách tạo một bộ như dưới đây. Vì vậy, có một số sử dụng cho họ, chỉ cần không có gì cần thiết trong trường hợp của bạn.

[Suite] 
    public static IEnumerable MySuite 
    { 
     get 
     { 
      var suite = new ArrayList{new TestClass1(arg1), TestClass2(arg2)}; 
      return suite; 
     } 
    } 
+0

Ngẫu nhiên, nếu có ai biết cách tốt hơn để vượt qua đối số/kiểm soát hành vi của thử nghiệm trong thời gian chạy hơn so với những gì tôi đã làm, hãy bình luận. Tôi đã dành thời gian tìm kiếm tài liệu và danh sách gửi thư của Nunit và đây là điều tốt nhất tôi có thể nghĩ ra! – imoatama

3

Có lý do nào khiến bạn quay trở lại "IEnumerable" thay vì "TestSuite" không?

[Suite] 
public static TestSuite Suite 

Cập nhật

Đọc nhỏ in ở dưới cùng của trang tại trang web NUnit, nó trông giống như kiểm tra kiểu Suite sẽ không hiển thị trong trong Á hậu Gui, vì vậy tôi đoán đó là vấn đề :)

Suite hiện không được hiển thị trong Gui hoặc tự động chạy bởi một trong hai nhân vật khi chúng gặp phải. Mục đích lịch sử của cơ chế Suite là cung cấp cách tổng hợp các bài kiểm tra ở cấp cao nhất của mỗi lần chạy. Do đó, chúng chỉ được hỗ trợ khi được sử dụng với tùy chọn/fixture trên giao diện điều khiển hoặc dòng lệnh gui.

Cập nhật 2

Tôi không chắc chắn những gì bạn đang cố gắng để đạt được với tính năng "Suite", nhưng nếu bạn đang cố gắng tìm một cách để cấu hình một bộ lắp ráp thử nghiệm để được chạy cùng nhau, tôi đã sử dụng "Dự án thử nghiệm NUnit" để thực hiện việc này trong quá khứ (chỉ là tệp cấu hình tệp kiểm tra xml). Điều này cho phép một tập cố định các tài liệu tham khảo lắp ráp thử nghiệm để được cấu hình và sau đó nạp vào GUI hoặc chạy bằng giao diện điều khiển Á hậu:

http://www.nunit.org/index.php?p=multiAssembly&r=2.5.5

+0

Đó là những gì các tài liệu nói rằng tôi nên làm: http://www.nunit.org/index.php?p=suite&r=2.4.7 Tôi nghĩ rằng nó đã làm với tách phiên bản NUnit từ bản thân kiểm tra. –

+0

a. Tôi không sử dụng tùy chọn/fixture và, quan trọng hơn, b. làm thế nào _am_ tôi phải chạy bộ? Tôi đã thử cả GUI và giao diện điều khiển .. nó không hoạt động. –

+0

Cảm ơn, tôi sẽ cố gắng thay thế. Nhưng để trả lời câu hỏi của bạn, vâng, đó là những gì tôi đang cố gắng đạt được, và tôi đã ấn tượng rằng đó là những gì Suites dành cho. Nếu không, chúng là gì? –