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