2010-03-08 12 views
11

Tôi đã làm việc trên khung kiểm tra, tạo ra miền ứng dụng mới để chạy thử nghiệm. Lý do chính là dll mà chúng tôi đang thử nghiệm có một số mã khủng khiếp dựa trên dll được đặt trong đường dẫn miền ứng dụng. (Không, tôi không thể thay đổi mã này.)Làm cách nào để nhận được giá trị xuất sắc thành sản lượng thấp nhất khi chạy trong miền ứng dụng mới?

Vấn đề mà tôi gặp phải là nhóm thử nghiệm của tôi đang viết một loạt các bài kiểm tra chức năng trong thời gian ngắn nhất và một trong nhật ký ghi vào Console.Out, không có bất kỳ thông tin nhật ký nào được ghi lại trong đầu ra trx. Khi chạy mã thông qua một giao diện điều khiển ứng dụng tất cả các thông tin đăng nhập được sản lượng tốt. Vì vậy, các logger khác đã được thực hiện.

Suy nghĩ của tôi là mstest đang thiết lập TextWriter của riêng nó thành Console.Out, nhưng ứng dụng mới doamin có TextWriter riêng cho Console.Out là miền ứng dụng mới có bộ thống kê riêng.

Tôi đánh giá cao ý tưởng của bạn.

+0

Lưu ý: câu hỏi này và câu trả lời được chấp nhận cũng áp dụng cho cửa sổ "Văn bản đầu ra" của NUnit và các bài kiểm tra tạo tên miền ứng dụng mới (và viết thành stdout). –

Trả lời

10

Tôi cảm thấy một chút ngượng ngùng, nhưng một khi tôi nhấn gửi và có suy nghĩ về nó một lần nữa vấn đề kinda trở nên rõ ràng và tôi đã làm việc ra một giải pháp.

Vấn đề là Console.Out ban đầu đã được đặt thành một TextWriter mới bởi mstest và điều này đã không được thiết lập trong miền ứng dụng mới của tôi.

Vì vậy, tôi đã tạo phương thức SetConsoleOut trên lớp mà tôi đã tạo trong appdomain mới và tôi chuyển nó cho Console.Out.

TestFramework testFramework = 
      (TestFramework)newAppDomain.CreateInstanceAndUnwrap(
               "TestFrameworkLibrary", 
               "MyNamespace.TestFramework"); 

testFramework.SetConsoleOut(Console.Out); 

Và trong TestFramework tôi đã thêm phương pháp

internal void SetConsoleOut(TextWriter consoleOut) 
{ 
    Console.SetOut(consoleOut); 
} 

trình như một say mê. Tôi không chắc chắn về nghi lễ ở đây. Tôi có nên xóa câu hỏi hoặc thêm câu trả lời cho câu hỏi không?

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