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

  • 相关阅读:
    高并发编程之基础概念
    使用JAXB实现Bean与Xml相互转换
    python语法(五)—函数
    2018年终总结
    python语法(四)— 文件操作
    excel开发
    spring 常用注解,@primary注解
    spring中InitializingBean和@Bean的初始化,bean初始化
    @PostConstruct 注解
    LocalDateTime java8
  • 原文地址:https://www.cnblogs.com/niejunlei/p/5280136.html
Copyright © 2011-2022 走看看