很多程序員對單元測試又愛又恨,愛的是可以大幅提高你代碼的質量、可讀性和后期維護的成本,總之好處說不完;恨的是它會大幅占用你原本就捉襟見肘的開發時間,讓你看起來效率不高,嗯,也只是看起來而已。如果是對原有代碼添加單元測試,那可真是一件讓人頭痛的事情。廢話不多說,今天遇到一件棘手的問題,是對既有代碼添加單元測試,限制很多,因為這是安全相關代碼,是通過了安全認證的,所以想動源代碼是不可能的;再就是,作為工程的一部分,單元測試代碼要放到固定的測試項目中去,方便執行自動化測試。
這些限制帶來一個問題,就是internal的屬性和方法我測不到啊!
不能打樁,還測個屁啊!
話雖如此,但是問題還得解決,它不會因為你的抓狂而自動解決。原來的程序已C#代碼完成的,后來靈機一動。我想到可以使用.Net中的反射來解決這個問題。
大概思路是,使用反射重建一個輔助測試的助手類,在單元測試的項目中重新暴露被測模塊的internal屬性和方法。再測試這個助手類。
這只是我自己想出來的方法,自己試了效果還是不錯的。如果有更好的辦法,歡迎交流。