The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

insert脚本生成和对测试驱动的感受

Posted on 2005-08-06 00:35  Cure  阅读(1722)  评论(6编辑  收藏  举报

这几天有些空闲,写了个生成insert脚本的小东东,用来给数据库中初始化信息。没有包括生成表的,是因为数据库设计工具都已经有这个功能了。这几天也有不少关于生成sql脚本的随笔了,因为是自己来用,所以考虑的不多。只要实现自己想要的功能就可以了。代码在这里
InitInsertSqlScript.rar
写的不好,特别是数据库访问上,感觉还有很大改进的余地。考虑到表之间的主外键约束关系,先对表名进行排序后再生成,在取关联表名和判断是否外键时使用字符串比较,不够安全。请大家指教,欢迎板砖。

其实写这篇随笔主要还是想写写在开发过程中使用NUnit测试的一点感受。从三个方面来说:
一:程序结构
本来界面和支持类是在一个工程中的。但是由于把测试类单独放在了一个工程中(从一些开源项目里学的),工程间的引用出了问题(测试工程是dll,不能引用exe)。主界面所在的工程是exe的,为了测试就只好先把工程改成了输出dll。后来感觉来回改还是很麻烦,就把仅有的一个窗体提出来放在一个工程中。这样整个解决方案就成了三个工程:支持库,界面,测试。把UI和支持库分离,这也算是单元测试对程序结构所起到的作用吧。
二:性能
刚开始写的时候有意忽略了性能问题。例如在返回数据时直接用DataSet。在基本功能都已实现后,开始作优化,首先把能替换的DataSet都替换成DataReader,测试时间从3.9秒缩短到3.4秒。但是这还不是关键的。在把拼接生成脚本时对string的操作替换成StringBuilder后,时间一下缩短到0.9秒左右。
三:开发效率:
虽然写测试代码可能要花费一些时间,但是在对支持类库经过测试后,自己更有信心,暴露了问题,提高了代码质量,更提高了开发效率

虽然不是有意的使用测试驱动的方法,但是单元测试在开发过程中起到的作用是可以切身体会到的。