@H_502_2@Michael Feathers@H_502_2@在@H_502_2@Artima@H_502_2@自己的@H_502_2@Blog@H_502_2@中
@H_502_2@1. 访问数据库@H_502_2@It talks to the database@H_502_2@
@H_502_2@2. 访问网络@H_502_2@It communicates across the network@H_502_2@
@H_502_2@3. 访问文件系统@H_502_2@It touches the file system@H_502_2@
@H_502_2@4. 不能和其他的单元测试代码同时运行@H_502_2@It can't run at the same time as any of your other unit tests@H_502_2@
@H_502_2@5. 做特殊的事情运行测试的代码@H_502_2@You have to do special things to your environment (such as editing config files) to run it.@H_502_2@
@H_502_2@使用一句话概括就是:把你的单元测试代码的逻辑和耗时的、与测试逻辑无关的代码分开;单元测试应该是纯粹的单元测试。@H_502_2@
@H_502_2@单元测试要严格遵守这些原则有时候很困难,需要变通的办法,我的想法是:@H_502_2@
@H_502_2@1. 测试逻辑概念函数和需要交涉的功能函数分开。如果一个测试逻辑概念函数,需要和文件、网络、数据库打交道,那么尽量的分开它们;@H_502_2@
@H_502_2@2. 把文件需要的内容以二进制的形式插入到代码中。这虽然很笨拙,但是消除了对文件的依赖。@H_502_2@