2010-05-13 38 views
18

Tôi đang cố viết một phương thức đơn giản để nhận tệp và chạy nó bằng NUnit. Code tôi quản lý để xây dựng sử dụng nguồn NUnit của không hoạt động:Làm thế nào để chạy Thử nghiệm NUnit từ C# Mã số

if(openFileDialog1.ShowDialog() != DialogResult.OK) 
{ 
    return; 
} 

var builder = new TestSuiteBuilder(); 
var testPackage = new TestPackage(openFileDialog1.FileName); 
var directoryName = Path.GetDirectoryName(openFileDialog1.FileName); 
testPackage.BasePath = directoryName; 
var suite = builder.Build(testPackage); 

TestResult result = suite.Run(new NullListener(), TestFilter.Empty); 

Vấn đề là tôi tiếp tục nhận được một ngoại lệ ném bởi builder.Build nói rằng hội đồng đã không được tìm thấy.

Tôi đang thiếu gì? Có cách nào khác để chạy thử nghiệm từ mã (không sử dụng Process.Start) không?

+0

Thành thật mà nói, tôi không biết về cách này thử nghiệm. Đoán mù, bạn đã thử chạy thử nghiệm này thông qua giao diện NUnit, hoặc xác minh xem bạn có tất cả các phụ thuộc được tham chiếu trong dự án của bạn hay có lẽ nếu assembly nằm ở nơi ngoại lệ nói nó không thể tìm thấy nó? Một lớp thử nghiệm với NUnit phải có thuộc tính [TestFixture()], và các phương thức thử nghiệm thuộc tính [Test()], sử dụng nhập khẩu NUnit.Framework. –

Trả lời

27

Thêm dòng sau vào đầu, thiết lập khuôn khổ NUnit và có thể giúp bạn:

CoreExtensions.Host.InitializeService(); 

Một cách "dễ dàng hơn" để thực hiện NUnit kiểm tra theo chương trình sẽ là:

TestPackage testPackage = new TestPackage(@"C:\YourProject.Tests.dll"); 
RemoteTestRunner remoteTestRunner = new RemoteTestRunner(); 
remoteTestRunner.Load(testPackage); 
TestResult testResult = remoteTestRunner.Run(new NullListener()); 

Bạn cần tham khảo các hội đồng sau đây:

  • nunit.core.dll
  • nunit.core.interfaces.dll

Và tất nhiên, các nunit.framework.dll phải nằm trong cùng thư mục với lắp ráp thử nghiệm của bạn;)

+1

Có bất kỳ tài liệu nào trong số này được ghi lại không? Tôi muốn thực hiện một cái gì đó như thế này bản thân mình nhưng tôi muốn RTFM để xem những gì các tùy chọn được mở cho tôi – Andy

+2

Tôi không tìm thấy tài liệu và đã phải poke xung quanh [mã nguồn] (https://github.com/nunit/ nunitv2) để biết thêm thông tin. Nhưng- trong khi tôi ở đó - tôi đã tìm thấy một sự khác biệt tinh tế giữa 'RemoteTestRunner' và' SimpleTestRunner' - trước đây gọi 'CoreExtensions.Host.InitializeService' cho bạn, trong khi Simple runner không (do đó yêu cầu bạn người dùng thêm nó vào ma cua ban). – SethO

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