`
langgufu
  • 浏览: 2306907 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用JUnit4测试Spring(转)

阅读更多

Spring环境下的JUnit4测试

1,下载所需jar包:

spring-test-3.2.0.RELEASE.jar

junit-4.11.jar

commons-dbcp-1.4.jar

 

2,配置Spring数据源:

spring-dao-test.xml

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

[html] view plaincopy
  1. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  2.     <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />  
  3.     <property name="url" value="jdbc:oracle:thin:@192.168.1.2:1523:test" />  
  4.     <property name="username" value="test" />  
  5.     <property name="password" value="test" />      
  6. </bean>  

 

3,测试DAO

SpringTest.java

[java] view plaincopy
  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. }  

 

4,测试Spring的Controller

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

[java] view plaincopy
  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. }  

 

5,注意被测试对象在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

分享到:
评论

相关推荐

    基于Spring的JUnit4测试

    基于Spring的JUnit4单元测试

    Junit4+Spring2.5单元测试代码示例(也适用注解测试)

    Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)

    junit4测试jar包

    10. **扩展性与兼容性**:JUnit4设计得非常开放,可以通过实现`Runner`接口来扩展其功能,例如SpringJUnit4ClassRunner可以结合Spring框架进行测试。同时,JUnit4与大多数IDE和构建工具(如Maven、Gradle)良好集成...

    Junit4测试使例

    JUnit4是Java编程语言中最广泛使用的单元测试框架之一,它为开发者提供了强大的工具来编写和运行测试用例,确保代码的正确性和稳定性。本篇将详细介绍JUnit4的主要特性和使用方法,以及如何通过示例来理解和应用这些...

    SSM中进行单元测试Junit4+spring-test所需jar包

    spring-test是Spring框架的一部分,专门用于测试Spring应用程序。它提供了与Spring容器集成的测试工具,如`@ContextConfiguration`用于加载配置,`@Autowired`自动注入依赖,以及`@MockBean`和`@SpyBean`来创建模拟...

    spring MVC junit 单元测试(controller)

    这篇博客主要探讨了如何使用JUnit进行Spring MVC Controller的单元测试。在实际开发中,单元测试可以帮助我们尽早发现潜在的问题,提高软件的可靠性和可维护性。 首先,让我们了解Spring MVC的基本概念。Spring MVC...

    spring4+JUnit简单测试

    《Spring4与JUnit的简单测试实践》 在Java开发领域,Spring框架以其强大的功能和灵活性深受开发者喜爱。Spring4作为其一个重要的版本,引入了许多改进和优化,使得测试变得更加便捷。而JUnit作为Java单元测试的事实...

    junit4 +spring jar包

    spring添加 单元测试 junit4 +spring jar包: hamcrest-core-1.3.jar junit-4.12.jar spring-test-4.2.5.RELEASE.jar

    Spring+JUnit4 +Ant测试报告

    4. **运行测试**:通过命令行或者IDE运行Ant任务,Ant会执行JUnit测试,并将结果输出到指定的目录下。 5. **查看测试报告**:Ant可以生成JUnit测试报告,通常为HTML格式,这样我们就可以直观地看到每个测试用例的...

    基于Spring的JUnit单元测试

    本篇文章将详细探讨如何在Spring环境中利用JUnit4进行有效的单元测试。 首先,让我们了解什么是单元测试。单元测试是对软件中的最小可测试单元进行检查和验证,对于Java来说,这个单元通常是方法。JUnit作为一款轻...

    Junit 单元测试完整案例

    4. `@Autowired`:用于注入Spring管理的bean,使得在测试中可以直接使用。 5. `@MockBean`和`@SpyBean`:这些注解可以用来模拟或监视特定的bean,方便测试。 三、Struts框架的单元测试 1. Struts2的测试挑战:...

    spring-dm junit

    2. **创建测试类**:为每个需要测试的Spring DM服务或组件创建一个JUnit测试类。在这些类中,你可以使用`@RunWith(SpringJUnit4ClassRunner.class)`注解来表明测试需要Spring Test的支持。 3. **定义测试上下文**:...

    spring+junit4

    在结合JUnit4进行测试时,我们需要使用Spring的`@ContextConfiguration`注解来加载Spring配置文件,这样可以确保在测试环境中也能注入正确的依赖。例如: ```java @RunWith(SpringJUnit4ClassRunner.class) @...

    junit针对spring mvc三层测试

    总结来说,使用JUnit针对Spring MVC的三层进行测试,我们需要: 1. 测试表现层(Controller),验证HTTP请求处理和视图渲染。 2. 测试业务层,确保业务逻辑的正确性和依赖隔离。 3. 测试服务数据访问层,验证数据库...

    spring2 junit3

    标题“spring2 junit3”指的是在Spring框架的第二个主要版本中使用JUnit3进行单元测试的相关内容。这篇博文可能探讨了如何在Spring 2.x时代利用JUnit3进行测试驱动开发(TDD),因为JUnit3是当时广泛使用的Java单元...

    SpringJUnit4ClassRunner 单元测试

    单元测试—— Spring 环境下测试,所需要的jar包: spring-test-4.3.29.RELEASE.jar、junit-4.13.1.jar、hamcrest-core-1.3.jar。

    junit测试spring,hibernate的dao层代码

    在整合 `JUnit` 进行测试时,我们需要使用 `Spring` 的测试支持,如 `@ContextConfiguration` 注解来加载配置文件,创建测试所需的 `ApplicationContext`。这样,`Spring` 会自动管理 `DAO` 实例,我们可以在测试...

    spring boot Junit4配置

    使用`@RunWith(SpringJUnit4ClassRunner.class)`注解指定使用Spring的JUnit4运行器来运行测试。`@SpringBootTest`注解则用来加载整个Spring应用上下文,`classes=Application.class`指定了应用的主配置类。如果测试...

    使用JUnit进行单元测试PPT

    **如何使用JUnit4进行单元测试?** JUnit4引入了注解(Annotation)来简化测试编写,不再需要强制继承TestCase类。以下是一些关键的JUnit4注解: - `@Before`:类似于JUnit3的setUp方法,用于设置测试前的环境。 -...

    单元测试利器JUnit4

    JUnit4与Spring等依赖注入框架结合,可以方便地模拟对象间的依赖关系,便于测试隔离。例如,使用`@InjectMocks`和`@Spy`、`@Mock`注解创建并配置mock对象。 7. 缓存和重新运行测试(RunWith and Retrying Tests):...

Global site tag (gtag.js) - Google Analytics