1、持续集成时,某个单元测试失败,找不到作者。
项目成员持续流动,加之测试用例随着项目的开发而不断增加,查找代码的作者,也算是个力气活了,如 何能快速而准确的定位到代码开发者呢?Java提供的 @author 可以达到该要求;
开发增加和修改的单元测试,必须要将开发者注释,便于快速定位。
2、单元测试方法只能执行一次。
一位同事写的代码,调用删除方法,传入主键ID,将该记录删除;结果再次执行的时候报错,对象不存在; 原来是JUnit单元测试框架搭建有问题,没有设置默认回滚.仅需添加以下注解即可:
@TransactionConfiguration (transactionManager="transactionManager",defaultRollback=true) @Transactional
当然了,也可以在方法级别指定(一般不推荐):
@Rollback(true)
3、单元测试方法没有断言。
@Test public void testFindPeople(){ PeopleQuery pQuery = new PeopleQuery(); pQuery.setName("zhangsan"); pQuery.setLevel(4); peopleDao.findPeople(pQuery); }
代码如上,不知道这样的单元测试目的何为,完全没有业务上的判断逻辑。
因此提出,JUnit测试方法必须有断言(某些极端情况排除,比如测试超时时间、异常等),以满足业务上 和逻辑上的要求。
4、方法执行出错,但是JUnit显式测试成功(出现绿条)
@Test public void testException(){ try { int i = 10/0; Assert.assertEquals(2,i); } catch (Exception e) { e.printStackTrace(); } }
代码如上,被0除,大家肯定知道该句会报错,但是结果呢,JUnit却提示”执行成功”。为什 么呢?
原来,被0除报错之后,语句绕过断言,进入到catch语句中,打印异常之后,该单元测试执行完毕。压根 就没走断言!!!
JUnit4支持(出现异常,则测试失败).因此无须在添加try catch语句,亦或在catch语句块中添加断言; 而如果想测试异常,可以使用参数来执行即可。
以上问题已经添加了自己的一些想法。
出现以上问题,足以反映出开发团队的一些问题:
1、开发成员对JUnit方面知识涉猎太少;
2、开发成员看出问题,而没有反映,则说明了开发团队热情度不高;
3、反映过该问题,但其他成员依然如此,说明了团队沟通不足或者不是一个学习型团队;没有提供一定 的交流、学习时间。
4、项目领导只关心功能是否正常,其他一切不管。唉,无话可说了。
写在此,希望自己遇到以上问题的时候,能积极解决,而不是消极面对。
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/project/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索问题
, 开发
, 测试
, 单元测试
, 方法
, 代码
, jfinal开发问题
, junit4
, 代码审核
, iOSEaseUI集成报错
快速定位异常
你我贷审核打几个电话、用钱宝审核要几个小时、不遇到几个渣男、借条上遇到这几个字、女人会遇到几个追求者,以便于您获取更多的相关知识。