前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用JUnit4测试Spring

使用JUnit4测试Spring

作者头像
WindWant
发布2020-09-11 10:19:20
5160
发布2020-09-11 10:19:20
举报
文章被收录于专栏:后端码事后端码事

测试DAO

代码语言:javascript
复制
 1 import static org.junit.Assert.*;
 2 
 3 import org.junit.Before;
 4 import org.junit.Ignore;
 5 import org.junit.Test;
 6 import org.junit.runner.RunWith;
 7 import javax.annotation.Resource;
 8 import org.springframework.test.context.ContextConfiguration;
 9 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
10 import org.springframework.test.context.transaction.TransactionConfiguration;
11 import org.springframework.transaction.annotation.Transactional;
12 
13 
14 @Transactional
15 @TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
16 @RunWith(SpringJUnit4ClassRunner.class)
17 @ContextConfiguration(locations={"classpath:spring-dao-test.xml","classpath:spring-service-test.xml"})
18 public class SpringTest
19 {
20     @Resource(name="testDao")
21     private TestDao testDao;
22 
23     @Before
24     public void setUp() throws Exception
25     {
26     }
27 
28     @Test
29     public void testMyDao()
30     {
31         try
32         {
33             testDao.doSomething();
34         }
35         catch (Exception e)
36         {
37             fail("Test failed!");
38         }
39     }
40 
41     @Ignore
42     public void testOtherSpringObject()
43     {
44         fail("Not yet implemented");
45     }
46 }

测试Spring的Controller

代码语言:javascript
复制
 1 import static org.junit.Assert.*;
 2 import org.junit.Before;
 3 import org.junit.Test;
 4 import org.junit.runner.RunWith;
 5 import javax.annotation.Resource;
 6 import org.springframework.http.HttpMethod;
 7 import org.springframework.mock.web.MockHttpServletRequest;
 8 import org.springframework.mock.web.MockHttpServletResponse;
 9 import org.springframework.test.context.ContextConfiguration;
10 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
11 import org.springframework.test.context.transaction.TransactionConfiguration;
12 import org.springframework.transaction.annotation.Transactional;
13 import org.springframework.web.servlet.ModelAndView;
14 
15 
16 @Transactional
17 @TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
18 @RunWith(SpringJUnit4ClassRunner.class)
19 @ContextConfiguration(locations={"classpath:spring-servlet.xml", "classpath:spring-dao-test.xml", "classpath:spring-service-test.xml"})
20 public class CreateProductControllerTest
21 {
22     @Resource(name="/createProduct.htm")
23     CreateProductController createProductController;
24     
25     private MockHttpServletRequest request;
26   private MockHttpServletResponse response;
27 
28     @Before
29     public void before()
30     {
31         request = new MockHttpServletRequest();
32         response = new MockHttpServletResponse();
33         request.setCharacterEncoding("UTF-8");
34     }
35 
36     @Test
37     public void testToSearchPage()
38     {
39         //request.setRequestURI("createProduct.htm");
40         //request.setMethod(HttpMethod.POST.name());
41         
42         ModelAndView mv = null;
43         try
44         {
45             mv = createProductController.toSearchPage(request, response);
46         }
47         catch (Exception e)
48         {
49             e.printStackTrace();
50             fail("testToSearchPage failed!");
51         }
52 
53         assertNotNull(mv);
54         assertEquals(response.getStatus(), 200);
55     }
56 }

注意被测试对象在Spring中不能配置AOP切面代理,否则注入到TestCase时,会产生类型不匹配的异常。因为被代理后的类型发生了变化,注入到TestCase中时,与原始的类型有区别。

另外,运行TestCase时,可能需要加上两个jvm参数:

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl -Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-03-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档