2013-04-12 37 views
6

Tôi cần chạy các thử nghiệm C# NUnit riêng lẻ theo lập trình. Tôi tìm thấy another post rất hữu ích trong việc chỉ cho tôi cách chạy toàn bộ các bài kiểm tra theo lập trình, nhưng tôi cần phải có thể chọn các bài kiểm tra riêng lẻ.Chạy các thử nghiệm NUnit riêng lẻ theo lập trình

Tôi nghĩ rằng việc thiết lập một NameFilter sẽ thực hiện thủ thuật, nhưng RemoteTestRunner dường như chỉ nghĩ rằng có một thử nghiệm trong bộ phần mềm của tôi khi có hơn năm mươi. Nó thực sự gộp tất cả các bài kiểm tra trong một DLL duy nhất thành một bài kiểm tra khổng lồ? Có cách nào mà tôi có thể tách chúng ra và chạy các trường hợp thử nghiệm riêng lẻ không?

+0

Bạn có ý nghĩa gì chính xác bằng cách chạy theo chương trình? Bạn đang nói về việc bắt đầu một tiến trình khác và truyền lệnh thông qua dòng lệnh để chạy một số xét nghiệm nhất định, hoặc thực hiện theo cách khác? – Zipper

+0

Tôi có nghĩa là viết mã sẽ thực hiện kiểm tra đơn vị bằng cách thực hiện một cuộc gọi chức năng: 'CoreExtensions.Host.InitializeService();' 'TestPackage testPackage = new TestPackage (@" C: \ Dev \ MyUnitTests.dll ");' 'RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); ' ' remoteTestRunner.Load (testPackage);' 'testResult testResult = remoteTestRunner.Run (NullListener mới(), TestFilter.Empty, false, LoggingThreshold.Error); ' – Huitzilopochtli

+1

Về cơ bản những gì tôi đang cố gắng làm là viết mã sẽ chạy một bài kiểm tra đơn vị cho tôi và lưu trữ kết quả trong một số cấu trúc dữ liệu. Thay vì chạy thử nghiệm từ dòng lệnh hoặc GUI, tôi muốn có thể viết mã thực thi các kiểm tra NUnit. Tôi đã có mã từ bài viết tôi liên kết đến đó cho tôi thấy làm thế nào để chạy chương trình thử nghiệm _every_ trong một bộ cho trước, nhưng tôi muốn khả năng chạy các bài kiểm tra được lựa chọn trong một bộ. – Huitzilopochtli

Trả lời

0

Tôi đã phải sử dụng SimpleNameFilter và chuyển đến hàm tạo của nó tên của bài kiểm tra đơn vị mà tôi muốn chạy. Dưới đây là những gì tôi có:

SimpleNameFilter filter = new SimpleNameFilter("Google.Maps.Test.Integrations.GeocodingServiceTests.Empty_address"); 
TestResult testResult = remoteTestRunner.Run(new NullListener(), filter, false, LoggingThreshold.Error); 

Bạn có thể nhận được tên thử nghiệm đủ điều kiện bằng cách tìm ra từ bản thân kiểm tra hoặc bằng cách xem Thuộc tính thử nghiệm của bạn trong chương trình NUnit.

1

tôi đã phải vượt qua một bộ lọc là tốt, chỉ cần thực hiện

TestResult testResult = remoteTestRunner.Run(new NullListener(), null , false, LoggingThreshold.Error); 

kết thúc trong một NullReferenceException. Tôi đã nhanh chóng tạo một bộ lọc trống

class EmptyFilter : TestFilter 
{ 

    public override bool Match(ITest test) 
    { 
     return true; 
    } 
} 

và chuyển nó đến remoteTestRunner.

TestResult testResult = remoteTestRunner.Run(new NullListener(), new EmptyFilter() , false, LoggingThreshold.Error); 

Điều đó có hiệu quả. Những gì người ta có thể đầu tư một chút là để tìm kiếm xem NUnit đã có một bộ lọc tương tự mà có thể được tái sử dụng hơn là tạo một tùy chỉnh.

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