Chúng tôi đang viết bài kiểm tra đơn vị cho lớp kinh doanh của chúng tôi chạy trong .NET 4.0. Lớp nghiệp vụ là một thư viện lớp C# đơn giản, thường chạy trong các dịch vụ web SOAP và REST. Ứng dụng của chúng tôi sử dụng log4net trong một hội đồng bao bọc riêng biệt để ghi nhật ký. Mã C# trong bản ghi nhật ký có một chỉ thị thông tin lắp ráp cho biết tên tệp cấu hình của log4net, a la-Log4net không thể tìm thấy tệp cấu hình khi chạy từ Visual Studio/Microsoft Test Framework
[assembly: log4net.Config.XmlConfigurator (ConfigFile = "AcmeLogging.config", Watch = true) ]
Khởi tạo log4net qua trình bao bọc hoạt động tốt trong các dịch vụ web. Khi chúng ta khởi tạo nó với assembly unit unit của chúng ta, nó không xuất hiện để xem file cấu hình. File configuratino được cấu hình thông qua các thuộc tính được sao chép vào thư mục thực thi, và chúng ta thấy nó trong thư mục bin \ debug. Một chương trình kiểm tra giao diện điều khiển nhanh bằng cách sử dụng cụm ghi nhật ký chạy từ bên trong cùng một thư mục đó hoạt động tốt. Điều kỳ lạ là các vấn đề hành vi không liên tục, và bật lên trên các máy phát triển khác nhau tại các thời điểm khác nhau và không thể được chữa khỏi theo bất kỳ cách xác định nào.
Bước qua mã lắp ráp trình bao bọc, cuộc gọi log4netLogManager.GetLogger() xuất hiện để trả về chính xác, nhưng danh sách các ứng dụng được trả về bởi log.Logger.Repository.GetAppenders() trống. Vì hành vi không chính xác này giống nhau cho dù tệp nằm trong thư mục Bin \ Debug hay không, chúng tôi tin rằng nó không thấy tệp.
Bất kỳ manh mối nào về những gì chúng tôi thiếu về việc chạy log4net trong Microsoft Test Framework sẽ được đánh giá cao.
Đây chính xác là những gì chúng tôi cần, điều này sẽ làm cho cả nhóm rất vui. Cảm ơn nhiều. Tôi muốn bỏ phiếu cho câu trả lời này, nhưng không có đủ hoạt động SO để làm như vậy - nhưng độc giả trong tương lai nên xem xét việc bỏ phiếu bổ sung cho câu trả lời này. –