2013-11-24 56 views
1

我試圖單元測試寫入EventLog的庫。在每個測試中,庫都會檢查測試源是否已經存在(始終在這些測試中使用相同的源名稱),否則會創建它。單元測試中EventLog的奇怪行爲

現在我注意到奇怪的現象,當這些測試是在打造專業化代理運行: 比方說,我們下面的測試數據: 的EventSource:TestSource ProtocolName:測試名

經過測試已運行(和大部分除了新代理之外,許多測試失敗,因爲事件日誌的EntryWritten事件不再被觸發)突然之後是兩個EventProtocols:TestName,TestName2

但是我只是無法弄清楚什麼時候以及爲什麼會這樣第二個協議被創建。 有人知道這種行爲嗎?

提前致謝!

+0

可能是用戶權限問題,EventLog怪異常見原因。那麼在「好」機器上,這些單元測試是否也會創建EventLog源?對於運行unittests的任何東西,以前創建的EventLog源可能沒有正確的權限。你也可以做一些理智的事情,並且總是爲測試運行創建/刪除這些EventLog源。 –

+0

請注意,由於您正在訪問事件源(外部系統),因此更多的是集成測試,而不是單元測試。 – Spock

+0

感謝您的回答!由於構建代理在系統帳戶下運行,因此定義不是權限問題。除此之外,我認爲,如果這是一個許可問題,甚至不會創建消息來源。源始終都會創建,但過了一段時間後,它會創建第二個源,並將「2」添加到指定的名稱。 –

回答

1

我設法解決了這個問題。令人尷尬的是,我錯過了一個創建這個協議的測試。我甚至無法通過搜索找到它。

我還設法實現了一個可接受的清理方法(爲了刪除evtx文件,我必須停止eventlog服務)。

編輯: 如果任何人有同樣的問題:請注意,停止事件日誌服務也會停止日程安排(因此它必須在重新啓動事件日誌時手動重新啓動)。