从代码审核时遇到的有关JUnit的几个问题来看项目开发问题

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集成报错
快速定位异常
你我贷审核打几个电话、用钱宝审核要几个小时、不遇到几个渣男、借条上遇到这几个字、女人会遇到几个追求者,以便于您获取更多的相关知识。

时间: 2024-10-28 06:53:42

从代码审核时遇到的有关JUnit的几个问题来看项目开发问题的相关文章

PHP代码审核的详细介绍_php技巧

概述代码审核,是对应用程序源代码进行系统性检查的工作.它的目的是为了找到并且修复应用程序在开发阶段存在的一些漏洞或者程序逻辑错误,避免程序漏洞被非法利用给企业带来不必要的风险代码审核不是简单的检查代码,审核代码的原因是确保代码能安全的做到对信息和资源进行足够的保护,所以熟悉整个应用程序的业务流程对于控制潜在的风险是非常重要的.审核人员可以使用类似下面的问题对开发者进行访谈,来收集应用程序信息. 应用程序中包含什么类型的敏感信息,应用程序怎么保护这些信息的?应用程序是对内提供服务,还是对外?哪些人

firefox火狐浏览器与ie浏览器在html代码编写时的差异

本文讲解了firefox火狐浏览器与ie浏览器在html代码编写时的差异,程序员有进行开发调试时,可按下面说到的HTML标签进行调试. 1.ul不同,ie下默认是margin留白,FF下默认是padding留白,所以要先用margin:0;padding:0;来实现兼容.2.给定高度后,当内容过多,真实高度大于给定高度时,两者不同还有呢? 在ff测试div+css的过程中发现不少问题,主要原因是代码的不规范书写. 1.居中问题div里的内容,ie默认为居中,而ff默认为左对齐.使ff内容居中的方

图片-大神,我这代码运行时为什么出错?

问题描述 大神,我这代码运行时为什么出错? #include #include #include struct sport { char sex,athname[10]; char itemtype,itemname[10]; int itemrank,itemnum,mgrade,wgrade; }ath[2]; struct school { int num; char name[10]; struct sport ath[2]; //int score; }sch[2]; void xue

js css-大神,我这代码运行时为什么出错?

问题描述 大神,我这代码运行时为什么出错? <!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html xmlns=""http://www.w3.org/1999/xhtml"&

excel-WCF 执行SSIS包,代码运行时客户端调用没问题.发布后执行失败

问题描述 WCF 执行SSIS包,代码运行时客户端调用没问题.发布后执行失败 SSIS包将Excel数据导入Sql Server. 在代码中选中.svc文件右键在浏览器中查看,这样启动的服务,客户端可调用成功! 发布到IIS中,客户端调用失败! 这是什么原因呢?跟身份验证有关系吗? 解决方案 应该是用户权限问题,设置一个独立用户http://www.jb51.net/article/39743.htm

测试对象类超大(1万行代码以上)时使用virtual mock object无效

问题描述 当测试对象类超大(1万行代码以上)时,使用virtualmockobject,即使利用addretrun等方法设置了某个方法的返回值,但是返回值还是实际代码返回的结果.有何化解之法?请各位大侠指教. 解决方案 解决方案二:测试的东东没玩过解决方案三:搞那么大干嘛重构啊

java代码编程时,做初始化(不用new()方法),怎么做?

问题描述 java代码编程时,做初始化(不用new()方法),怎么做? java代码编程时,做初始化(不用new()方法),怎么做? 解决方案 public class AccpTeacher { private String name; private int age; public AccpTeacher() { name = "无名氏"; age = 22; } public AccpTeacher(String name) { this.name = name; this.ag

微信认证新增公对公账户银行卡转账支付审核费用 缩减认证审核时长

昨天微信团队发布公告:微信认证新增公对公账户打款支付审核费用,微信公众平台运营者可选择使用企业的对公账户用银行卡转账给微信的对公账户,从而缩减资质认证的审核时长.这个可以有,就像微信认证结果拆分为资质审核和名称审核,微信公众平台可以认证自己想要的名称了,真正惠及了自媒体人.以下是公告的具体内容:[2015.06.15更新一分钱就可以完成微信公众号主体验证了] 微信认证新增公对公账户打款支付审核费用 微信认证支付费用时,除了可以选择"微信支付"的支付方式,还新增了银行卡转账的支付方式,用

【项目篇】Android团队项目开发之统一代码规范

前言 团队项目开发前的统一三要素:统一需求/开发文档,统一代码规范,统一环境(编译/测试/发布). 一个项目团队,要想有高效的产出,必须在团队协作上下好功夫,必须在项目开发统一进度上做好协调.只有在高效的协同环境下,才能有优质的产出.这是我多年的经验之谈.也是配合过多个团队之后的深刻感悟. 每一个程序员都是有独立开发思维模式,都有自己的编码行为和操作习惯.所以,在一个团队中,怎么做到更高效的协同,不仅仅是每个开发者自身的协同配合能力,更重要的是项目管理者,怎样做到统一要求和统一实行. 举个很简单