WebWork 2 : JUnit
This page last changed on Jun 09, 2004 by ctran.
你可以采用几种方法对活动类进行单元测试. 最简单的办法是初始化活动类, 调用setters, 然后调用execute(). 这样可以跳过所有复杂的容器设置工作.从Petsoar中摘录的例子: package org.petsoar.actions.inventory; import com.mockobjects.constraint.IsEqual; import com.mockobjects.dynamic.C; import com.mockobjects.dynamic.Mock; import com.opensymphony.xwork.Action; import junit.framework.TestCase; import org.petsoar.pets.Pet; import org.petsoar.pets.PetStore; public class TestViewPet extends TestCase { private Mock mockPetStore; private ViewPet action; protected void setUp() throws Exception { mockPetStore = new Mock(PetStore.class); PetStore petStore = (PetStore) mockPetStore.proxy(); action = new ViewPet(); action.setPetStore(petStore); } public void testViewPet() throws Exception { Pet existingPet = new Pet(); existingPet.setName("harry"); existingPet.setId(1); Pet expectedPet = new Pet(); expectedPet.setName("harry"); expectedPet.setId(1); mockPetStore.expectAndReturn("getPet", C.args(new IsEqual(new Long(1))), existingPet); action.setId(1); String result = action.execute(); assertEquals(Action.SUCCESS, result); assertEquals(expectedPet, existingPet); mockPetStore.verify(); } public void testViewPetNoId() throws Exception { mockPetStore.expectAndReturn("getPet", C.ANY_ARGS, null); String result = action.execute(); assertEquals(Action.ERROR, result); assertEquals(1, action.getActionErrors().size()); assertEquals("Invalid pet selected.", action.getActionErrors().iterator().next()); assertNull(action.getPet()); mockPetStore.verify(); } public void testViewPetInvalidId() throws Exception { action.setId(-1); testViewPetNoId(); } } 测试截取器和结果类型查看XWork/WebWork中的测试用例. 它很全面并提供了很好的起点. 例如, 下面是如何测试ParametersInterceptor: public void testDoesNotAllowMethodInvocations() { Map params = new HashMap(); params.put("@java.lang.System@exit(1).dummy", "dumb value"); HashMap extraContext = new HashMap(); extraContext.put(ActionContext.PARAMETERS, params); try { ActionProxy proxy = ActionProxyFactory.getFactory(). createActionProxy("", MockConfigurationProvider.MODEL_DRIVEN_PARAM_TEST, extraContext); assertEquals(Action.SUCCESS, proxy.execute()); ModelDrivenAction action = (ModelDrivenAction) proxy.getAction(); TestBean model = (TestBean) action.getModel(); String property = System.getProperty("webwork.security.test"); assertNull(property); } catch (Exception e) { e.printStackTrace(); fail(); } } 注意: 这不是唯一的办法, 因此请自己决定. |
Document generated by Confluence on Dec 14, 2004 16:36 |