360SDN.COM

首页/Java/列表

使用JUnit4测试Spring

来源:  2017-07-06 11:03:17    评论:0点击:

spring环境下的JUnit4测试

1,下载所需jar包:

spring-test-3.2.0.RELEASE.jar

junit-4.12.jar

commons-dbcp-1.4.jar

maven的pom.xml引用如下:

 

<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>

<dependency>

<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.3.RELEASE</version>
</dependency>



2,配置Spring数据源:

spring-dao-test.xml

因为测试用例不是运行在Server环境下,不方便通过JNDI取得数据源,所以只能在Spring中自行配置,暂用DBCP(实际开发中建议不用DBCP,有BUG):
 

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />  
        <property name="url" value="jdbc:oracle:thin:@192.168.1.2:1523:test" />  
        <property name="username" value="test" />  
        <property name="password" value="test" />      
    </bean>  

3,测试DAO

SpringTest.Java
 

     import static org.junit.Assert.*;  
      
    import org.junit.Before;  
    import org.junit.Ignore;  
    import org.junit.Test;  
    import org.junit.runner.RunWith;  
    import javax.annotation.Resource;  
    import org.springframework.test.context.ContextConfiguration;  
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
    import org.springframework.test.context.transaction.TransactionConfiguration;  
    import org.springframework.transaction.annotation.Transactional;  
      
      
    @Transactional  
    @TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)  
    @RunWith(SpringJUnit4ClassRunner.class)  
    @ContextConfiguration(locations={"classpath:spring-dao-test.xml","classpath:spring-service-test.xml"})  
    public class SpringTest  
    {  
        @Resource(name="testDao")  
        private TestDao testDao;  
      
        @Before  
        public void setUp() throws Exception  
        {  
        }  
      
        @Test  
        public void testMyDao()  
        {  
            try  
            {  
                testDao.doSomething();  
            }  
            catch (Exception e)  
            {  
                fail("Test failed!");  
            }  
        }  
      
        @Ignore  
        public void testOtherSpringObject()  
        {  
            fail("Not yet implemented");  
        }  
    }  

4,测试Spring的Controller

(1)测试用例代码CreateProductControllerTest.java


 

    import static org.junit.Assert.*;  
    import org.junit.Before;  
    import org.junit.Test;  
    import org.junit.runner.RunWith;  
    import javax.annotation.Resource;  
    import org.springframework.http.HttpMethod;  
    import org.springframework.mock.web.MockHttpServletRequest;  
    import org.springframework.mock.web.MockHttpServletResponse;  
    import org.springframework.test.context.ContextConfiguration;  
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  
    import org.springframework.test.context.transaction.TransactionConfiguration;  
    import org.springframework.transaction.annotation.Transactional;  
    import org.springframework.web.servlet.ModelAndView;  
      
      
    @Transactional  
    @TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)  
    @RunWith(SpringJUnit4ClassRunner.class)  
    @ContextConfiguration(locations={"classpath:spring-servlet.xml", "classpath:spring-dao-test.xml", "classpath:spring-service-test.xml"})  
    public class CreateProductControllerTest  
    {  
        @Resource(name="/createProduct.htm")  
        CreateProductController createProductController;  
          
        private MockHttpServletRequest request;  
      private MockHttpServletResponse response;  
      
        @Before  
        public void before()  
        {  
            request = new MockHttpServletRequest();  
            response = new MockHttpServletResponse();  
            request.setCharacterEncoding("UTF-8");  
        }  
      
        @Test  
        public void testToSearchPage()  
        {  
            //request.setRequestURI("createProduct.htm");  
            //request.setMethod(HttpMethod.POST.name());  
              
            ModelAndView mv = null;  
            try  
            {  
                mv = createProductController.toSearchPage(request, response);  
            }  
            catch (Exception e)  
            {  
                e.printStackTrace();  
                fail("testToSearchPage failed!");  
            }  
      
            assertNotNull(mv);  
            assertEquals(response.getStatus(), 200);  
        }  

为您推荐

友情链接 |九搜汽车网 |手机ok生活信息网|ok生活信息网|ok微生活
 Powered by www.360SDN.COM   京ICP备11022651号-4 © 2012-2016 版权