zoukankan      html  css  js  c++  java
  • 使用JUnit4测试Spring

    测试DAO

     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

     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

  • 相关阅读:
    WMI系统管理工具介绍和获取机器码
    QListWidget高性能加载图片数据
    2.5偏差方差分解
    QT图片旋转动画
    Qt实现数字滚动动画效果
    Qt动画使用总结
    线性回归--经验最小化,结构最小化,最大似然估计,最大后验估计
    获取国家2019年最新的省、市、区/县、街道、小区/居委会信息 包括港澳台
    .net 利用Emit将object转为DbParameter,DataTable转为List<>
    c#简单操作MongoDB_2.4
  • 原文地址:https://www.cnblogs.com/niejunlei/p/5280136.html
Copyright © 2011-2022 走看看