struts2大家都是怎么做单元测试的

foobra 发布于 2011/05/19 19:09
阅读 2K+
收藏 0

以前一直不做单元测试,现在在重构自己以前写的代码,发现不做单元测试心里老是不踏实.

但是感觉struts2不好做单元测试,设计到页面上很多东西,大家怎么做struts2的单元测试呢?求分享一下

加载中
0
jinceon
jinceon

我也想知道

0
o
owenludong

基于WEB的单元测试 主要是要用到一些servelt api,可以用模拟测试,有很多开源的框架 比如Jmock,让框架去继承servlet api对象。还有一种方法 我没试过 用第三方的一个容器 用代码来启动服务器,然后用代码来访问http, apache的cactos可以试试。

0
jeffsui
jeffsui

既然是单元就要看action调用是否正确,返回的都是字符串。

其次看servlet调用

cactus 听说过,但是没具体应用。

0
foobra
foobra

其实主要的问题是ssh框架中,action会调用一大堆的manager层代码,manager层又调用dao,导致写单元测试的时候感觉很棘手

0
jeffsui
jeffsui

恩,楼上说的是一方面。

但是既然是单元,那就要具体到方法调用。

三层,分别来看,有些测试是重复的,而且浪费时间的。

单元测试更关注底层代码实现吧。个人理解。

0
o
owenludong

单元测试和分层有什么关系,你调用就可以了,主要问题还是单元测试如何取到servlet api。

0
吴汉阳
吴汉阳

好像只要调一个struts的接口就可以了

0
疯狂的艺术家
疯狂的艺术家

我把一个片段粘给你,你稍微看一下

xxAction addAction = new xxAction();

Map<String, Object> session = new HashMap<String, Object>();

addAction.setSession(session);

IMocksControl control = EasyMock.createControl();

HttpServletRequest request = control.createMock(HttpServletRequest.class);

EasyMock.expect(request.getRemoteAddr()).andReturn("127.0.0.1").anyTimes();

control.replay();

addAction.setServletRequest(request);

Map<String, String> app = new HashMap<String, String>();

app.put("name", "test");

app.put("code", "test");

addAction.setApp(app);

addAction.execute();

0
Binny
Binny

struts2 只是玩过,几个项目用的是struts1  和 SpringMVC ,感觉SpringMVC的单元测试最方便。

返回顶部
顶部