我們正在爲在.NET 4.0下運行的業務層編寫單元測試。業務層是一個簡單的C#類庫,通常在SOAP和REST Web服務中運行。我們的應用程序在獨立的包裝程序集中使用log4net進行日誌記錄。日誌程序集中的C#代碼有一個程序集信息指令,它告訴log4net配置文件的名稱,一個lar當從Visual Studio/Microsoft Test Framework運行時,Log4net找不到配置文件
[程序集:log4net.Config.XmlConfigurator(ConfigFile =「AcmeLogging.config」,Watch = true) ]
通過包裝器初始化log4net可以在Web服務中正常工作。當我們用我們的單元測試程序集初始化它時,它看起來沒有看到配置文件。 configuratino文件是通過將屬性複製到執行目錄來配置的,我們可以在bin \ debug目錄中看到它。使用從同一文件夾內運行的日誌程序集的快速控制檯測試程序可以正常工作。奇怪的是,行爲問題是間歇性的,並且在不同的時間在不同的開發者機器上彈出,並且不能以任何確定性的方式被治癒。
單步執行包裝程序集代碼時,log4netLogManager.GetLogger()調用顯示爲正確返回,但log.Logger.Repository.GetAppenders()返回的appender列表爲空。由於這種不正確的行爲是相同的,無論文件是否在Bin \ Debug文件夾中,我們都認爲它沒有看到該文件。
任何有關我們在Microsoft Test Framework中運行log4net時缺少的線索都將不勝感激。
這完全是我們所需要的,這會讓整個團隊都非常開心。非常感謝你。我想爲這個答案投票,但沒有足夠的SO活動來這樣做 - 但未來的讀者應該考慮這個答案的額外投票。 –