仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 465|回复: 11
打印 上一主题 下一主题

[学习教程] 来看利用Spring 2.5 TestContext测试框架

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#跟java类似,但是在跨平台方面理论上可以跨平台,实际上应用不大,执行性能优于java,跟C++基本一致,但是启动速度还是慢.代码安全,但容易性能陷阱.
概述
Spring2.5比拟于Spring2.0所新增的最主要的功效能够回结为以下3点:
基于注解的IoC功效;
基于注解驱动的SpringMVC功效;
基于注解的TestContext测试框架。
Spring保举开辟者利用新的基于注解的TestContext测试框架,本文我们将对此举行具体的报告。
低版本的Spring所供应的Spring测试框架构在JUnit3.8基本上扩大而来,它供应了多少个测试基类。而Spring2.5所新增的基于注解的TestContext测试框架和低版本的测试框架没有任何干系。它接纳全新的注解手艺可让POJO成为Spring的测试用例,除具有旧测试框架一切功效外,TestContext还增加了一些新的功效,TestContext能够运转在JUnit3.8、JUnit4.4、TestNG等测试框架下。
间接利用JUnit测试Spring程序存在的不敷
在拙作《精晓Spring2.x—企业使用开辟详解》一书中,笔者已经指出假如间接利用JUnit测试基于Spring的程序,将存在以下4点分明的不敷:
招致Spring容器屡次初始化成绩:依据JUnit测试用例的挪用流程,每实行一个测试办法城市从头创立一个测试用例实例并挪用其setUp()办法。因为在一样平常情形下,我们都在setUp()办法中初始化Spring容器,这意味着测试用例中有几个测试办法,Spring容器就会被反复初始化几次。
必要利用硬编码体例手工猎取Bean:在测试用例中,我们必要经由过程ApplicationContext.getBean()的办法从Spirng容器中猎取必要测试的方针Bean,而且还要举行外型操纵。
数据库现场简单蒙受损坏:测试办法大概会对数据库纪录举行变动操纵,损坏数据库现场。固然是针对开辟数据库举行测试事情的,但假如数据操纵的影响是耐久的,将会构成堆集效应并影响到测试用例的再次实行。举个例子,假定在某个测试办法中往数据库拔出一条ID为1的t_user纪录,第一次运转不会有成绩,第二次运转时,就会由于主键抵触而招致测试用例实行失利。以是测试用例应当既可以完成测试固件营业功效准确性的反省,又可以简单地在测试完成后恢复现场,做到踏雪无迹、雁过无痕。
不简单在统一事件下会见数据库以查验营业操纵的准确性:当测试固件操纵数据库时,为了检测数据操纵的准确性,必要经由过程一种便利路子在测试办法不异的事件情况下会见数据库,以反省测试固件数据操纵的实行效果。假如间接利用JUnit举行测试,我们很难完成这项操纵。
Spring测试框架是专门为测试基于Spring框架使用程序而计划的,它可以让测试用例十分便利地和Spring框架分离起来,以上一切成绩都将水到渠成。
一个必要测试的Spring服务类
在详细利用TextContext测试框架之前,我们先来熟悉一下必要测试的UserService服务类。UserService服务类中具有一个处置用户登录的服务办法,其代码以下所示:
清单1.UserService.java必要测试的服务类
package com.baobaotao.service;

import com.baobaotao.domain.LoginLog;
import com.baobaotao.domain.User;
import com.baobaotao.dao.UserDao;
import com.baobaotao.dao.LoginLogDao;

public class UserService{

  private UserDao userDao;
  private LoginLogDao loginLogDao;

  public void handleUserLogin(User user) {
    user.setCredits( 5 + user.getCredits());
    LoginLog loginLog = new LoginLog();
    loginLog.setUserId(user.getUserId());
    loginLog.setIp(user.getLastIp());
    loginLog.setLoginTime(user.getLastVisit());
    userDao.updateLoginInfo(user);
    loginLogDao.insertLoginLog(loginLog);
  }
  //省略get/setter办法
}
<p>
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的),
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-20 20:07:25 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
再现理想 该用户已被删除
板凳
发表于 2015-1-25 07:27:16 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
海妖 该用户已被删除
地板
发表于 2015-1-25 22:50:16 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
深爱那片海 该用户已被删除
5#
发表于 2015-1-29 05:28:17 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
小妖女 该用户已被删除
6#
 楼主| 发表于 2015-2-5 18:04:31 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
爱飞 该用户已被删除
7#
发表于 2015-2-7 08:05:55 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
金色的骷髅 该用户已被删除
8#
发表于 2015-2-10 23:24:14 | 只看该作者
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
兰色精灵 该用户已被删除
9#
发表于 2015-3-6 16:45:10 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
飘灵儿 该用户已被删除
10#
发表于 2015-3-11 13:02:01 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
变相怪杰 该用户已被删除
11#
发表于 2015-3-18 11:55:20 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
精灵巫婆 该用户已被删除
12#
发表于 2015-3-25 20:14:41 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 14:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表