单元测试对于每个项目都是需要的,它不仅仅是帮助找出代码中缺陷,更重要是在你修改与增加新模块时能确保原来的模块没有被破坏。
下面是5个单元测试容易放的错误:
1. 与协作模块一起去测试算法。算法逻辑如果能从协作的代码中分离出来,应该是最简单的测试。否则,你得必须通过作业队列之前完成测试。作业队列中只有一部分复杂的逻辑。除非你正在测试是作业队列本身,并分别测试逻辑。无论代码和测试都需要变得容易编写与管理。
2. 太多Mocking. 我们知道通过我们会使用Mocking来隔离依赖,使得它们独立。换句话说,就是使你的代码模块化。当你Mock了整个世界,已没有什么迫使你分得开的部分。那你最终得到的代码是不能孤立地创造任何东西---全部纠结在一起了。
3. 没有使用asserts断言。有时我看到一些测试只是创建了对像,调用了方法。可能完成是一个验证创建或调用循环。但是,没有使用任何的asserts检查。检查代码是否是期待的行为。的确,代码可运行,如果有抛出异常,也没有任何东西可以验证。
4. 使用PRint打印语句。 我看到一些是从手工测试遗留下来的习惯。你看看它的价值再决定正确与否。但是,所有的检查应该使用断言进行。如果断言失败,你会看到它,因为测试失败。如果测试通过,没有什么应该被打印出来。有时候,开发测试时,它可以用print语句非常有用。但在这种情况下,添加一个标志,并关闭测试中打印,来检查这个标志。
5.检查log语句,不是结果。值得庆幸的这是不常见的,但我还是看到了,否则很能干的开发者做到这一点。无论结果是多么重要,没有打印在log中,可能在代码有错误,并且测试仍然通过。
最后3个错误容易避免,前2个需要花些时间,但代码最终漂亮的隔离开了。
希望对您软件开发有帮助。
您可能感兴趣的文章:
使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试
数据访问层的单元测试
软件项目避免开发儿童玩具
作者:Petter Liu
出处:http://www.VEVb.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。
新闻热点
疑难解答