2009-08-12 108 views
1

任何人都有測試「超出過程程序集」的經驗嗎? 我正在測試一些Com +(服務組件)和WCF服務配置爲在進程外激活,我不確定在這些情況下測試的最佳實踐是什麼。單元測試組件不足處理

我所做的是給予公共課程他們自己的IOC容器,他們可以在激活時建立起來。這工作得很好,但我只要我嘗試和2個原因單元測試遇到的問題...

  1. 的任何依賴對象我想注入的需求,因爲單元測試是在一個不同的進程中運行的可序列化。如果我想將一個額外的模塊(ninject)加載到com + kernel/ioc容器中,我需要編寫自己的模塊以使其可序列化。我只是爲了做測試而將事物序列化是不舒服的。

  2. 進程中的組件需要安裝到GAC中,並且在需要註冊Com +的情況下。這使得測試變得很痛苦,因爲他們需要在測試之前進行安裝。

我現在只能想到兩種方法來解決這個問題。

  1. 對運行在那裏我已經修改,以在進程中運行的組件測試配置一個單獨的工作拷貝。很明顯,這並不理想,因爲現在我正在修改代碼以使其可測試。儘管我可以忍受這一點,因爲它沒有涉及任何功能上的變化。

  2. 讓單元測試繼承自Com +或WCF組件,以便測試可以在相同的進程邊界中運行。 (這需要單元測試將要安裝到GAC)

+0

這是Jon Skeet的一個hehe – 2009-08-12 01:36:03

回答

1

我會去你的第一個建議:對運行中的組件在運行過程中測試一個單獨的工作拷貝。

優點是:

  • 一旦你有你的系統上這個工作將在其他團隊成員的機器上運行沒有任何配置。

  • 由於您不進行進程間調用,因此測試運行速度將顯着加快。

我記得我第一次開始測試驅動開發。像你一樣,我不願意改變我的代碼來適應自動化測試。我逐漸改變了自己的想法。這些庫需要爲兩個同樣重要的客戶提供服務:生產客戶端代碼和測試。

2

一般來說,我會爲一個進程中的組件和另一個進程中的組件進行測試,而不一定會打擾中間的點(只要保持儘可能薄)。

如果您正在測試兩個獨立進程之間的交互,我認爲這幾乎是定義的集成測試。