推广单元测试遇到的几个问题
我们组涉及到几个项目,要在组内推广单元测试,碰到了一些问题:
1、测试框架应提供的功能
首先是一个公共测试基类,定义了数据源,是用JPA的,直接用注解定义了数据源。A项目报表比较多,经常需要准备很多测试数据,A项目的负责人想把该功能集成到测试基类中,我认为该功能是A项目独有的,不需要集成到测试基类,可封装到A项目的测试基类。
2、测试粒度
测试粒度我认为是类的一个方法,在我们组里对应的应该是Service层的方法,DAO层是JPA的,用注解写的,全部是接口。B项目负责人认为测试粒度应该是一个业务,该业务可能做了很多事情。我认为这种业务应该把事情再细分,逐一进行单元测试,再进行业务的集成测试。
3、测试时机
真能做到TDD吗,即先写单元测试再写实现代码。我们现在基本都是写了实现代码,再写测试代码,这可能也受进度影响。
4、单元测试要关注什么
由于我们刚单元测试刚起步,我推荐了Junit, Emma, EasyMock等工具,并指出要关注逻辑覆盖,但部分人员认为,我们初步先注重编写单元测试,可以不管单元测试的质量,只关注输入输出,所以先使用Junit,逻辑覆盖测试也不要求那么高,在Excel里面定义了输出输出并说明单元测试要做的事情,实际的测试代码能够完成Excel里定义的输入输出就行了。
大家在实际中有遇到这些情况吗?有什么高见拿出来跟兄弟分享一下。
[解决办法]
学习一下,小弟也是做测试的
不知道有没有高手指点指点
[解决办法]
建议不要采用理想化的方案,一开始一定要追求效益,只做容易做且效益大的。哪些是容易做的和效益大的?算法密集度高且数据密集度低的代码,简单来说,就是那些有复杂的功能逻辑的函数(这种函数一般数据密集度都不高,如果不是,通常表示需要优化,将算法逻辑分离出来)。这些代码测试好了,单元测试的效益基本上就得到了。我在这篇博客里谈到了这个观点http://blog.csdn.net/dellfox/archive/2009/12/22/5053059.aspx。
[解决办法]
我们公司做单元测试就是用Junit测的,呵呵
[解决办法]
可以参考看一下《JUnit Recipes中文版》,基本上单元测试的工具XUnit都是按照上面的思想做的。那里面讲的很详细。对于开源的单元测试工具来说,并不局限于工具本身,毕竟人是活的吗。可以在边用的过程中边去修改源代码,以便更有效的为工作服务。
[解决办法]
单元测试一般都是开发人员自己做啊。。。