2009-10-21 24 views
2

我有我的解決方案三個項目:log4net是否會終止我的WCF單元測試?

  • 一個WCF Web服務提供的功能我想測試
  • 它調用的Web應用程序的Web服務
  • 運行於服務測試的測試項目。

Web服務和Web應用程序都使用log4net的,獨立的配置文件,該線路的AssemblyInfo.cs進行配置:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

當我瀏覽到Web服務的URL(http://localhost/MyWebService/MyWebService.svc ),它如預期的那樣出現 - 信息和wsdl的鏈接。

當我使用web應用程序時,它一切正常。該代碼調用Web服務並獲得正確答覆。記錄來自Web應用程序和Web服務。

然而,當我跑我的單元測試,他們都失敗,出現以下異常:

Test method MyServiceTest.MyServiceAuthTest.TestValidateCorrectly threw exception: System.ServiceModel.ServiceActivationException: The requested service, 'http://localhost/MyWebService/MyWebService.svc' could not be activated. See the server's diagnostic trace logs for more information.

在事件日誌,我的本地機器上,我得到以下信息:

WebHost failed to process a request. Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/12905972 Exception: System.ServiceModel.ServiceActivationException: The service '/MyWebService/MyWebService.svc' cannot be activated due to an exception during compilation. The exception message is: Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821' or one of its dependencies. Strong name signature could not be verified. The assembly may have been tampered with, or it was delay signed but not fully signed with the correct private key. (Exception from HRESULT: 0x80131045).

我已經刪除並替換參考,清理和重建,甚至清除臨時asp.net文件,都無濟於事。網站沒有問題地調用服務,但測試失敗。

有誰知道這裏會發生什麼?

更新:我刪除了所有對log4net的引用,並且測試運行併成功,沒有問題。顯然,這遠不是可取的。有什麼建議麼?

更新2:這兩個東西結合的一些固定的問題:

  • 增加了一個參考在我的測試項目log4net的,並確保完全初始化它。
  • 使用log4net 1.2.10的發佈版本而不是調試版本。

回答

3

你有沒有從你的單元測試來log4net的庫的引用?試試看。

這背後的原因:大多數的單元測試框架的試運行期間的屏蔽二進制文件到別的地方,但這樣做,他們並不覺得在所有的情況下,深度嵌套引用。我曾經用NHibernate和log4net來解決這個問題。在MSTest的情況下,你不能關閉陰影。 NUnit GUI有一個選項,但我沒有安裝它,所以你必須自己尋找它:-)

+0

這是一個很好的解釋。另一個解決方法是使用其他方式來配置log4net。例如,用代碼加載配置文件,這是我的首選,因爲它允許您處理缺少特例的文件。 – 2009-10-21 06:44:08

+0

說實話,我覺得我沒有成功。我現在在家,但當我重新開始工作時,我一定會再來一次。我可能在某個時候錯過了一步... – Damovisa 2009-10-21 09:12:38

+0

不完全確定什麼解決了問題,但這肯定有幫助。我添加了對測試項目的引用,並在init中對它進行了實例化,但仍然失敗。我刪除了對log2net調試的引用,並將其替換爲發行版本,並且所有工作都正常。順便說一句,版本1.2.10 ... – Damovisa 2009-10-21 21:37:14

0

我也會考慮將log4net處理添加到你的單元測試配置中。無論如何,這在查看故障時非常有用。
這個link爲NUNit解釋它,它也應該可以用於其他框架。