//测试类
public void testAddAblum(){
Map map1 = new HashMap();
map1.put("ablum.id", 21212121);
map1.put("ablum.name", "专辑名称");
Map map2 = new HashMap();
map2.put(ActionContext.PARAMETERS, map1);


ActionProxy proxy = null;
try {
proxy = ActionProxyFactory.getFactory().createActionProxy("/ablum", "addAblum", map2);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/*.xml");
AblumService ablumService = (AblumService)applicationContext.getBean("ablumService");

AblumAction ablumAction = (AblumAction)proxy.getAction();

ablumAction.setAblumService(ablumService);
proxy.setExecuteResult(false);
try {
proxy.execute();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//我的配置文件
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
<xwork>
    <package name="ablum" extends="default" namespace="/ablum">
     <action name="addAblum" class="com.koocu.front.action.AblumAction" method="addAblum">
       <result name="success" type="dispatcher">/index.jsp</result>
        </action>
       
    </package>
</xwork>
//这个方法是action里的
public String addAblum(){
System.out.println(ablum.getName());
this.ablumService.save(ablum);
return this.SUCCESS;
}
问题1.我用页面测试时,程序没有问题。但是换成JUnit就出现以下问题
    2.我还有个测试就是在用户注册的没有问题,都能进行测试。
java.lang.NullPointerException
at com.opensymphony.webwork.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:89)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:186)
at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:188)
at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
at test.com.user.test.AblumTest.testAddAblum(AblumTest.java:42)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

解决方案 »

  1.   

    at test.com.user.test.AblumTest.testAddAblum(AblumTest.java:42) 
      

  2.   

    AblumTest.java:42是什么????
      

  3.   

    对就是在这句上,我有些不太明白,为何这句出现NullPointException呢?
      

  4.   

    package test.com.user.test;import java.util.HashMap;
    import java.util.Map;import junit.framework.TestCase;import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;import com.koocu.front.action.AblumAction;
    import com.koocu.front.service.AblumService;
    import com.opensymphony.xwork.ActionContext;
    import com.opensymphony.xwork.ActionProxy;
    import com.opensymphony.xwork.ActionProxyFactory;public class AblumTest extends TestCase{ public void testAddAblum(){
    Map map1 = new HashMap();
    map1.put("ablum.id", 21212121);
    map1.put("ablum.name", "专辑名称");
    Map map2 = new HashMap();
    map2.put(ActionContext.PARAMETERS, map1);


    ActionProxy proxy = null;
    try {
    proxy = ActionProxyFactory.getFactory().createActionProxy("/ablum", "addAblum", map2);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring/*.xml");
    AblumService ablumService = (AblumService)applicationContext.getBean("ablumService");

    AblumAction ablumAction = (AblumAction)proxy.getAction();

    ablumAction.setAblumService(ablumService);
    proxy.setExecuteResult(false);
    try {
    proxy.execute();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }
      

  5.   

    proxy = ActionProxyFactory.getFactory().createActionProxy("/ablum",
    "addAblum", map2);应该是这个返回null,你再调调看
      

  6.   

    proxy = ActionProxyFactory.getFactory().createActionProxy("/ablum", 
    "addAblum", map2); 
    这个不是空的。我测试过。
      

  7.   

    OK了,问题主要是我的配置文件里面少了句<interceptor-ref name="params" />加上就可以了。晕死得了。<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd"> 
    <xwork> 
        <package name="ablum" extends="default" namespace="/ablum"> 
        <action name="addAblum" class="com.koocu.front.action.AblumAction" method="addAblum"> 
          <result name="success" type="dispatcher">/index.jsp </result> 
        </action>   
        </package> 
    </xwork> 
      

  8.   

    你的spring配置文件估计没有初始化