對不起,很長的文章...單元測試「結構」的方法?
雖然被引入到棕色領域的項目,我懷疑某些單元測試和思考。假設你有一個repostory類,包裝一個存儲過程並在開發人員指南中包含一些特定的準則(規則),描述應該如何構造這個類。類可能看起來像以下:現在
public class PersonRepository
{
public PersonCollection FindPersonsByNameAndCity(string personName, string cityName)
{
using (new SomeProfiler("someKey"))
{
var sp = Ioc.Resolve<IPersonStoredProcedure>();
sp.addNameArguement(personName);
sp.addCityArguement(cityName);
return sp.invoke();
}
} }
,我當然會寫一些集成測試,測試的SP可以被調用,並且該行爲是按預期。然而,我會寫單元測試斷言:
- 構造用於與所述輸入參數「someKey」 SomeProfiler稱爲
- PersonStoredProcedure的構造被稱爲
- 對所存儲的過程中的addNameArgument方法被稱爲與參數PERSONNAME
- 在存儲過程addCityArgument方法稱爲使用參數的cityName
- 調用方法被稱爲所存儲的過程 -
如果是這樣,我可能會測試一個方法的整個結構,除了行爲。我最初的想法是,它是矯枉過正。但是,關於團隊實施的編碼實踐,這些測試確保了統一和「正確」的結構,並且下一層被正確調用(從DAL到DB,BLL到DAL等)。
在我的情況下,這些類型的測試是針對應用程序的每一層執行的。
後續問題 - SomeProfiler類的使用有點像傳統給我的感覺 - 而是爲此創建顯式測試,是否可以通過使用靜態代碼分析或unittest + reflection創建約定樣式的測試?
在此先感謝。
我會標記爲答案您的回覆。希望對測試商業價值與代碼結構進行更多的討論。但是我對下一個代碼審查有一點點意見。 – jaspernygaard