JUnit学习笔记16 用JSP和taglib进行单元测试3
用mock objects对taglib进行单元测试 因为JSP不是纯粹的java代码,所以,使用mock进行测试是行不通的,但是,taglib却是纯粹的java代码,可以测试,但是它也有麻烦的地方,我们要为抽象的java类的PageContext创建mocks。 在前面,我们曾学习了使用EasyMock和DynaMock的框架来创建mock,但是,他们使用的是Dynamic Proxy特性,他们只能为接口产生代理,不能用于类。这次,我们使用MockMaker。 安装插件的地址是http://mockmaker.org/ 安装的方法简单,Google!下面仅学习一下用法。 在要mock的类上右键,选择MockMaker—>select package 这样就在你选择的位置生成了mock程序。 现在让我们为DynaPropertiesTag类写一个mock测试程序。 package junitbook.pages;
import junit.framework.TestCase;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.beanutils.BasicDynaClass;
import javax.servlet.jsp.tagext.Tag;
public class TestDynaPropertiesMO extends TestCase
{
private DynaPropertiesTag tag;
private MockPageContext mockPageContext;
private DynaBean createDynaBean() throws Exception
{
DynaProperty[] props = new DynaProperty[] {
new DynaProperty("id", String.class),
new DynaProperty("responsetime", Long.class)
};
BasicDynaClass dynaClass = new BasicDynaClass("requesttime",
null, props);
DynaBean bean = dynaClass.newInstance();
bean.set("id", "12345");
bean.set("responsetime", new Long(500));
return bean;
}
protected void setUp()
{
tag = new DynaPropertiesTag();
mockPageContext = new MockPageContext();
tag.setPageContext(mockPageContext);
}
public void testDoStartTag() throws Exception
{
DynaBean bean = createDynaBean();
mockPageContext.setupFindAttribute(bean);
mockPageContext.addExpectedFindAttributeValues("item");
mockPageContext.addExpectedSetAttributeStringObjectValues(
相关文档:
把那些限制访问的资源(比如说jsp源代码)放到Web应用的WEB-INF目录下,对于/web-INF/及其子目录,不允许直接的公共访问,所以就可以起到保护这些代码未经授权的访问和窥视,更好的保护了源代码。
通常JSP开发人员会把他们的页面文件存放在Web应用相应的子目录下。这种方法的问题是 ......
因为要实现一个WebServer,写完了一个简单的WebServer后突发奇想,何不实现一个JSP 的WebServer呢?
有了这个想法后,就开始考虑JSP的实现原理,其实JSP的实现也很简单,说白了就是将其转换成一个Java文件,再对这个Java文件进行编译,生成类文件,接着再由服务器使用这个类文件。从总体上分,可以将JSP文件的内容划分为两 ......
一 MVC设计模式的概念
MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。& ......
一、上传
引入包:org.apache.commons.fileupload.*
jsp代码: DiskFileUpload fu = new DiskFileUpload();
List list = fu.parseRequest(request);
if(list != null){
System.out.println(list.size());
  ......