使用JUnit对SpringMVC3.0的controller进行单元测试时报空指针异常

sujiangchichu 2014-05-13 03:15:15
先来异常信息
java.lang.NullPointerException
at com.b505.test.TestMapInputController.testLoginCheck(TestMapInputController.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
****************************************************************************************************************************
写的测试程序
@SuppressWarnings("deprecation")
@SpringApplicationContext( { "classpath:applicationContext.xml","file:WebRoot/WEB-INF/b505-servlet.xml" })
public class TestMapInputController extends TestCase
{
private ObjectMapper objectMapper = new ObjectMapper();
@Autowired
private JsonAnalyze jsonAnalyze;
// 从Spring容器中加载AnnotationMethodHandlerAdapter

@SpringBeanByType
private AnnotationMethodHandlerAdapter handlerAdapter;

// 从Spring容器中加载LoginController
@SpringBeanByType
private LoginController loginController = new LoginController();

// 声明Request与Response模拟对象
private MockHttpServletRequest request = new MockHttpServletRequest();
private MockHttpServletResponse response = new MockHttpServletResponse();

// 执行测试前先初始模拟对象
@Before
public void before()
{
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
}

//@Test
public void testLoginCheck() throws Exception
{
Map<String,Object> testMap = new HashMap<String,Object>();
testMap.put("userName", "太阳雨");
testMap.put("password", "123456");
testMap.put("role", "Role_Student");

System.out.println("testMap:"+testMap);
String testStr = objectMapper.writeValueAsString(testMap);
System.out.println("testStr:"+testStr);

request.setRequestURI("/loginCheck.html");
request.setMethod("POST");
request.setAttribute(HandlerMapping.INTROSPECT_TYPE_LEVEL_MAPPING, true);
request.setContentType("application/json; charset=UTF-8");
try
{
mav = handlerAdapter.handle(request, response, loginController);
}
catch(Exception e)
{
e.printStackTrace();
}
assertNotNull(mav);
System.out.println("向控制发起请求完毕");

}
}
...全文
721 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
byourfan 2014-05-13
  • 打赏
  • 举报
回复
测试类上加 @RunWith(SpringJUnit4ClassRunner.class) 或者继承 AbstractJUnit4SpringContextTestss
tony4geek 2014-05-13
  • 打赏
  • 举报
回复
at com.b505.test.TestMapInputController.testLoginCheck(TestMapInputController.java:103) 看 103 行。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧