2011-01-05 17 views
8

Tôi đang sử dụng nunit 2.5.9.10348 và cố gắng trích xuất tên thử nghiệm hiện tại trong sự kiện TearDown để tôi có thể gán tên tệp screengrab tên thử nghiệm tuy nhiên nó luôn rỗng (xem phần đính kèm hình ảnh). Biến _context riêng không có TestName tuy nhiên điều này không có ích gì đối với tôi!Nunit - TestContext.CurrentContext.Test không làm việc

Có ai đó đã thành công khi sử dụng chức năng TestContext mới này (từ 2.5.7).

alt text

Trả lời

3

Từ ảnh chụp màn hình của bạn tôi thấy rằng _context có các phím "TestName" và "Properties". Nhưng TestAdapter tìm kiếm các khóa "Test.Name" cho Name và "Test.Properties" cho Properties. Vì vậy, có một cái gì đó sai với khởi tạo TestContext (Tôi nghĩ rằng dữ liệu sai được đưa vào Remoting.Messaging.CallContext).

Sau khi điều tra một chút (xem ý kiến): Thử nghiệm NUnit sẽ được chạy bởi môi trường thử nghiệm NUnit để có sẵn ngữ cảnh.

+0

Đã thử điều này - không có niềm vui. Tuy nhiên những gì tôi đã nhận thấy là tên thử nghiệm chỉ là null trong trình gỡ lỗi. Các kiểm tra tương tự chạy bên trong TeamCity hoặc giao diện điều khiển nunit gui xuất ra tên thử nghiệm. – redsquare

+0

Tôi không biết rằng bạn chạy thử nghiệm mà không có GUI. Và điều này được cho là lý do - tôi nghĩ CallContext được khởi tạo bằng môi trường thử nghiệm. Nếu bạn đính kèm trình gỡ lỗi vào NUnit GUI, bạn có thể thấy CallContext được khởi tạo đúng cách. –

+0

Có, tôi đã làm một điều tra nhỏ - CallContext được khởi tạo trong quá trình kiểm tra thực hiện bởi NUnit (không phải bởi một số plugin cho Visual Studion). Có phương thức NUnit.Core.TestMethod.RunTestInContext() để thiết lập thông tin ngữ cảnh. Vì vậy, mà không cần chạy điều này, ngữ cảnh sẽ trống. –

0

Tôi gặp vấn đề tương tự. Nó xảy ra khi trong một phương pháp TearDown tôi thực hiện phương pháp, mà thực sự là để làm cho teardown

[TearDown] 
public void CleanUp() 
{ 
    TestContext.CurrentContext.Test.FullName; //!=null 
    someClassInstance.DoTearDown(); 
} 

class SomeClass 
{ 
    public void DoTearDown() 
    { 
      TestContext.CurrentContext.Test.FullName; //==null 
    } 
} 

Tôi không có ý tưởng tại sao, nhưng nó có vẻ như vậy. Đó là trường hợp của bạn?

UPDATE: Bây giờ tôi nhìn vào ảnh chụp màn hình, vì vậy nó không trường hợp của bạn :)

0

Vấn đề tương tự với nhân tố thử nghiệm R #. Chỉ cần tải xuống các nguồn NUnit và thêm một giải pháp thay thế trong TestAdapter để làm cho nó hoạt động với r #

 public string Name 
     { 
      get 
      { 
       return (_context["Test.Name"] ?? _context["TestName"]) as string; 
      } 
     } 
+0

bản phát hành (trực tuyến trong vài tuần) http://dl.dropbox.com/u/9569672/dexter/nunit.framework.dll –