项目管理者联盟 | 中国工程管理网 | 中国研发管理网   会员中心 资料库 博客 圈子

PMI-ACP®认证

适合敏捷开发项目
敏捷项目管理最佳实践

网络课程

PMI-PBA®认证

重视项目商业分析
商业价值与需求分析能力

网络课程

NPDP®认证

产品管理国际认证
全球产品管理最佳实践

网络课

PMP®认证

单项目管理经典指南
年轻项目经理首选

北京 | 直播 | 录播

PgMP®认证

大型复杂项目全球标准
定位高级项目管理层

网络班

PfMP®认证

链接战略与项目
实现组织资源投资回报

全球直播

软考项目管理

信息系统项目管理师
系统集成项目管理工程师

计划 | 报名 | 经验

论坛
价值源于交流与分享
会员区:
登陆ID 密  码
功能区: 公告建议 | 帖子搜索 | 管理团队 | 荣誉版主 | 帮助手册






 项目型组织  项目管理  工程项目  科技项目  项目化管理  管理软件  资格认证  职业休闲
EPM体系与流程 综合集成管理 总承包管理 IT软件开发 项目型制造 P3E/P6 PMP | PgMP 职业发展探讨
组织与人力资源 进度,范围,成本 国际工程 生物制药 专业服务 微软PROJECT IPMP | PRINCE2 管理学堂
项目管理信息化 团队建设与沟通 房地产 汽车设计开发 生活项目 PowerOn专版 软考项目管理 英语角|读书版
多项目与大项目 质量与风险 监理与咨询 手机数码 文体娱乐 注册建造师 房车吃游
PMO建设与管理 采购与合同 工程设计 项目管理硕士 闲聊版|商务版
俱乐部北京 | 大连 | 福州 | 广州 | 杭州 | 南京 | 山东 | 上海 | 深圳 | 四川 | 天津 | 武汉 | 西安 | 郑州 | 申请成立 TOP榜精华 | 最新 | 最热 | 会员

版面信息

说明:失败的IT项目比比皆是,进度延迟,预算超支,客户需求多变,成员加班抱怨...IT项目(软件开发.,信息系统实施等)寻求新生

本版版主

camer
登录:2013/7/2
次数:867
注册:2003/3/3
发帖:2745
dorothy
登录:2016/12/15
次数:804
注册:2004/9/6
发帖:993
steveli2008
登录:2009/5/26
次数:464
注册:2003/5/12
发帖:1026
zhf_karen
登录:2015/6/2
次数:346
注册:2005/6/13
发帖:469

俱乐部导航

北京大连福州广州杭州
南京山东上海深圳四川
天津武汉西安郑州 

联盟·近期活动

社区热点

华师大CTO学院:科创生态建设与创.
宏发电声江玫瑰谈PgMP:“下好一盘.
PgMP:交付能力与创造未来的项目管.
开放讲座|《项目组合管理与PfMP认证
开放讲座|项目组合管理与PfMP认证
开放讲座|PgMP:项目管理思维与方法
开放讲座|《项目组合管理与PfMP认证
网络讲座|《项目组合管理与个人职业
开放讲座|《项目组合管理与PfMP认证
网络直播|产品经理的四大核心技能提

精彩专题

如何做好项目沟通计划

软件项目质量管理

国际工程索赔与反索赔

更多:

推荐信息

·项目经理沙龙俱乐部
·推荐项目管理公开课程
·联盟VIP会员服务
·联盟99元大课堂
·建造师课程辅导免费试听

社区圈子

集团企业生态体.
圈主:ETPPM
行业:综合应用

HG信用盘0出租
圈主:de123
行业:综合应用

生态系统体系下.
圈主:ETPPM
行业:综合应用

西安IT项目管理
圈主:muzud
行业:IT软件

房地产项目管理
圈主:13935823
行业:房地产

联系社区管理员

咨询电话 010-82273401/11
斑竹申请 admin@mypm.net


版权所有 © 2003-2004
京ICP证070584号 
BBS业务许可2007第353号 
最佳显示模式:1024*768像素
项目管理与PMP认证
对Junit的初步认识 [发表于 2006/9/22]
状态 开放帖 浏览量 713   

这两天的花费了一些时间在使用spring-mock进行spring的单元测试问题上,基本上对这个问题有了一个大概的了解,总结如下:
1、 测试普通的java类。
① 首先,要建立一个测试类继承org.springframework.test.AbstractTransactionalDataSourceSpringContextTests类。
必须继承该类主要是为了获得Spring的Context。得到了Context才能使测试得以进行。
※该类经过多层的继承关系后,也继承于junit.framework.TestCase。
② 继承①中提到的类就必须要override其中的方法getConfigLocations()。实现如下:
       protected String[] getConfigLocations() {
           //必要の配置ファイルを提出する
           String[] config = new String[] {
                        "file:D:\\develop\\workspace\\lcl\\web\\WEB-INF\\entry-MenuDAO.xml"
                        };
           return config;
       }
      该方法是为了读入spring的上下文信息,这样的话这个测试用例就可以直接使用spirng中定义的  bean了。
     但是这里需要注意一个问题*,就是文件路径的问题,这里为了能够清楚地说明文件的      路径规则我引用了spring-mock官方的getConfigLocation方法说明
Subclasses must implement this method to return the locations of their config files. A plain path will be treated as class path location. E.g.: "org/springframework/whatever/foo.xml". Note however that you may prefix path locations with standard Spring resource prefixes. Therefore, a config location path prefixed with "classpath:" with behave the same as a plain path, but a config location such as "file:/some/path/path/location/appContext.xml" will be treated as a filesystem location.

③ 取得Spirng上下问中定义的bean的实例来进行单元测试这里有两种方法,
     ※一种是定义一个代测单元的对象,然后定义好get,set方法,       AbstractTransactionalDataSourceSpringContextTests会自动根据Spring的上下文得到待测单元的具体实现。
 private MenuDAO menuDAO ;
   
 public MenuDAO getMenuDAO(){
  return menuDAO ;
 }

 public void setMenuDAO ( MenuDAO menuDAO ){
  this.menuDAO = menuDAO ;
 }

    ※另外一种就是使用applicationContext.getBean("XXXDAO");的方法取得实例  XXXDAO xxxDAO = (XXXDAO)applicationContext.getBean("XXXDAO");

④ 接下来你就可以用这个bean的具体实现对相关方法进行unittest了。
注:
♀按照框架规定:编写的所有测试类,必须继承自junit.framework.TestCase类;里面的测试方法,命名应该以test开头,必须是public void 而且不能有参数;而且为了测试查错方便,尽量一个testXXX方法对一个功能单一的方法进行测试;使用assertEquals等junit.framework.TestCase中的断言方法(实际是junit.framework.Assert中的方法,TestCase继承了Assert。)来判断测试结果正确与否。
♀请注意Eclips中弹出窗口的一个细节,在绿条下面有Errors、Failures统计。这两者有何区别呢?
  Failures作为单元测试所期望发生的错误,它预示你的代码有bug,不过也可能是你的单元测试代码有逻辑错误(注意是逻辑错误)。Errors不是你所期待的,发生了Error你可以按照下面的顺序来检查:
  检查测试所需的环境,如:数据库连接
  检查单元测试代码
  检查你的系统代码
♀可以将所有的测试用例都放到一个TestSuit中进行测试,这样对于有修改之后的再测试非常的方便。

 

 

2、 对于View的测试。
① 首先,针对要测试的view创建一个测试类XXXViewTest,该类要继承于org.junit.framework.TestCase。
② 做成main方法:
      public static void main(String[] args) {
     junit.textui.TestRunner.run(XXXViewTest.class);
   }
③ 需要实现的方法
   setUp()方法:
      protected void setUp() throws Exception {
   
     ApplicationContext context = new FileSystemXmlApplicationContext(
      new String[] {
                 "file:D:\\develop\\workspace\\lcl\\web\\WEB-INF\\applicationContext.xml"
               , "file:D:\\develop\\workspace\\lcl\\web\\WEB-INF\\lcl-servlet.xml"

                    });
     BeanFactory beanFactory = (BeanFactory) context;
     controller = (Controller) beanFactory.getBean("entryMenuController");
     super.setUp();
   }
   该方法是在run()之前运行,主要是得到Context,列出必要的配置文件。
 tearDown()方法:
    protected void tearDown() throws Exception {
     super.tearDown();
   }
  该方法是在run()之后运行。
④ 测试方法:
   public void testOnSubmitSuccess(){
         MockHttpServletRequest req = new    MockHttpServletRequest("POST","menulist.html");
     req.addParameter("navigator.currentPage","4") ;
     ModelAndView mv = null;
     try {
       mv = controller.handleRequest(req,new MockHttpServletResponse());
     } catch (Exception err) {
       err.printStackTrace();
     }
    
     //遷移先のチェック
     assertEquals("viewName","common/menulist",mv.getViewName());
    }
该方法中需要注意的是:如何得到request。之后就可以进行构造请求来完成测试了。
⑤ 以上です。

注:いろいろなassertメソッドについて、Junitのヘルプをご参照して下さい。


>>> 由论坛统一发布的广告:
楼主 帅哥约,不在线,有人找我吗?dean4pm


职务 无
军衔 二等兵
来自 不告诉你 :)
发帖 19篇
注册 2006/4/2
PM币 82
经验 74点

Re:对Junit的初步认识 [回复于 2006/9/22]
又一个给小日本打工的?
--------------------------------------------------------------------------------------------------------
PM - PoorMan

BLOG:http://steve.mypm.net

=== 有问题,找IT项目管理 ===

1楼 帅哥约,不在线,有人找我吗?steveli2008


职务 无
军衔 中尉
来自 北京
发帖 1026篇
注册 2003/5/12
PM币 5062
经验 829点

共1页  97 [ 第1页 ] 8:
  
!  您尚未登录,不能回复主题。    现在 登录  注册
关于联盟 | VIP会员 | 培训服务 | PMP认证 | PgMP认证 | 刊物出版 | 沙龙会议 | 人才服务 | 广告投放 | 联系我们 | 友情链接
建设运营:共创时网络
版权所有 京ICP证070584号 BBS业务许可2007第353号