我只是升级到Struts 2.3.1.2, 和JUM测试有一些问题。
我的旧测试代码是这样的...
public class HomeActionTest {
@Test
public void testUserNameErrorMessage() throws Exception {
HomeAction action = new HomeAction();
setupMocks(action);
action.execute();
}
}
动作组执行方法有代码
String text = getText(GLOBAL_SELECT);
虽然在本地化的TextUtil 中,这引起了一个 NullPointer 例外,因为它叫...
ActionContext.getContext()
现在我可以尝试做这个...
ActionContext.setContext(new ActionContext(new HashMap()));
But then I ll get a NullPointerException since the Valuestack from the context is null. I could go on and on trying to fix these problems, but it seems like a futile task. There must be a better way?!?
这个嘛... Well...
我的臀部有弹簧
<action name="secure/home" class="homeAction" method="execute">
<result>home.jsp</result>
<result name="input">home.jsp</result>
<result name="error">error.jsp</result>
</action>
我的考试班
public class HomeActionTest extends StrutsSpringTestCase {
@Test
public void testUserNameErrorMessage() throws Exception {
ActionProxy proxy = getActionProxy("/secure/home");
// setup the session
Map<String, Object> session = new HashMap<String, Object>();
ActionContext actionContext = proxy.getInvocation().getInvocationContext();
actionContext.setSession(session);
HomeAction homeAction = (HomeAction) proxy.getAction();
proxy.execute();
}
}
But this now means I get a fully populated Spring injected Action class! Most people would saying "YEA!!!" at this point.
我的问题是,这不是UNIT测试级, 它现在一直打电话到 DB 层, 因为它的电线是如何 运行时间。
所以,这就是我的问题,我知道我花了一小段时间才找到它, “强势”是有可能得到一个“行动集团”的,该“行动集团”可以获得它所需要的资源(例如“Text()”等方法电话),但“春天”并没有全部连接起来吗?“/强”
此刻,我试图通过复选途径去删除所有方法, 来匹配Servicexxxxet的动作, 至少这样我就可以在测试时得到一个 NullPointer 例外, 我可以嘲笑这个服务, 但这是不对的。 我希望我的测试是FAST, 不要花两秒钟启动春季背景。
Struts2.3怎么会有基地测试等级 却不遵循单位测试的咒语呢?
在Struts 2.0.9(xwork-2.0.3.jar)中,这一切都很好。
我错过了什么?