這幾天有些空閑,寫了個生成insert腳本的小東東,用來給數據庫中初始化信息。沒有包括生成表的,是因為數據庫設計工具都已經有這個功能了。這幾天也有不少關于生成sql腳本的隨筆了,因為是自己來用,所以考慮的不多。只要實現自己想要的功能就可以了。代碼在這里
InitInsertSqlScript.rar
寫的不好,特別是數據庫訪問上,感覺還有很大改進的余地??紤]到表之間的主外鍵約束關系,先對表名進行排序后再生成,在取關聯表名和判斷是否外鍵時使用字符串比較,不夠安全。請大家指教,歡迎板磚。
其實寫這篇隨筆主要還是想寫寫在開發過程中使用NUnit測試的一點感受。從三個方面來說:
一:程序結構
本來界面和支持類是在一個工程中的。但是由于把測試類單獨放在了一個工程中(從一些開源項目里學的),工程間的引用出了問題(測試工程是dll,不能引用exe)。主界面所在的工程是exe的,為了測試就只好先把工程改成了輸出dll。后來感覺來回改還是很麻煩,就把僅有的一個窗體提出來放在一個工程中。這樣整個解決方案就成了三個工程:支持庫,界面,測試。把UI和支持庫分離,這也算是單元測試對程序結構所起到的作用吧。
二:性能
剛開始寫的時候有意忽略了性能問題。例如在返回數據時直接用DataSet。在基本功能都已實現后,開始作優化,首先把能替換的DataSet都替換成DataReader,測試時間從3.9秒縮短到3.4秒。但是這還不是關鍵的。在把拼接生成腳本時對string的操作替換成StringBuilder后,時間一下縮短到0.9秒左右。
三:開發效率:
雖然寫測試代碼可能要花費一些時間,但是在對支持類庫經過測試后,自己更有信心,暴露了問題,提高了代碼質量,更提高了開發效率
雖然不是有意的使用測試驅動的方法,但是單元測試在開發過程中起到的作用是可以切身體會到的。