在我以前一篇文章关于spring的文章中仔细讨论过spring单元测试策略,根据最近一些经验。今天再写一点自己的经验:
1.需要把单元测试时不需要的东西拿掉,比如缓存,安全等,这就需要怎么仔细考虑spring的applicationContext.xml功能。
2.DAO与Service的测试需要使用不同的策略,一般来讲,DAO单元测试只测试一个DAO类,而service需要多个DAO来支撑,有时还需要别的service支持。因此需要为DAO与service分别定义两个基类。DAO一般不需要使用事务,因此DAO测试基类继承AbstractDependencyInjectionSpringContextTests;而service需要,Service测试基类继承AbstractTransactionalDataSourceSpringContextTests
3.那怎么简化开发人员编写单元测试类呢?若每次都需要写很多,那他们自然不愿意写,所以架构师应该简化单元测试的编程模型上下功夫。一个原则:每个人只添加自己想要的,必要时可以覆盖全部的配置文件,完全自己来写,下面是我写的两个测试基类的demo
DAO测试基类
-
publicabstractclassAbstractDAOTestCaseextends
- AbstractDependencyInjectionSpringContextTests{
-
publicAbstractDAOTestCase(){
-
this.setAutowireMode(AUTOWIRE_BY_NAME);
- }
- @Override
-
protectedString[]getConfigLocations(){
-
String[]baseConfigs=newString[]{"/spring/applicationContext.xml"};
- String[]extentConfigs=getExtentConfigs();
-
intlength=baseConfigs.length+extentConfigs.length;
-
String[]allConfigs=newString[length];
-
for(inti=0;i<baseConfigs.length;i++){
- allConfigs[i]=baseConfigs[i];
- }
-
for(inti=0;i<extentConfigs.length;i++){
- allConfigs[i+baseConfigs.length]=extentConfigs[i];
- }
-
returnallConfigs;
- }
-
-
protectedString[]getExtentConfigs(){
-
returnnewString[]{};
- }
- }
Service测试基类
-
publicabstractclassAbstractServiceTestCaseextends
- AbstractTransactionalDataSourceSpringContextTests{
-
protectedUserDAOuserDAO;
-
publicAbstractServiceTestCase(){
-
this.setAutowireMode(AUTOWIRE_BY_NAME);
- }
- @Override
-
protectedString[]getConfigLocations(){
-
String[]baseConfigs=newString[]{"spring/applicationContext.xml",
-
"spring/applicationContext-transaction.xml",
-
"org/codehaus/xfire/spring/xfire.xml",
-
"spring/applicationContext-xfire.xml",
-
"spring/applicationContext-osworkflow.xml",
-
"spring/platform/*.xml"};
- String[]extentConfigs=getExtentConfigs();
-
intlength=baseConfigs.length+extentConfigs.length;
-
String[]allConfigs=newString[length];
-
for(inti=0;i<baseConfigs.length;i++){
- allConfigs[i]=baseConfigs[i];
- }
-
for(inti=0;i<extentConfigs.length;i++){
- allConfigs[i+baseConfigs.length]=extentConfigs[i];
- }
-
returnallConfigs;
- }
-
-
protectedString[]getExtentConfigs(){
-
returnnewString[]{};
- }
-
publicvoidsetUserDAO(UserDAOuserDAO){
-
this.userDAO=userDAO;
- }
- }
-
分享到:
相关推荐
在Spring Boot项目中,JUnit测试是开发者进行单元测试的常用工具。JUnit是一个流行的Java编程语言的单元测试框架,它使得测试代码的编写变得简洁而高效。这篇博客文章(虽然描述为空,但可以从标题和标签推测内容)...
本示例“spring-demo15-测试”主要聚焦于Spring框架中的测试部分,通过一系列的实例,深入探讨如何有效地进行Spring应用的单元测试和集成测试。 1. **Spring测试模块** Spring框架提供了内置的测试支持,包括`...
接着,我们讨论Spring的集成测试。集成测试是验证系统组件之间交互的重要环节。Spring Boot提供了一个方便的`@SpringBootTest`注解,可以启动一个完整的Spring应用上下文来进行测试。通过`@WebMvcTest`或`@...
总的来说,Spring4提供了丰富的测试支持,结合JUnit能够实现从单元测试到集成测试的全面覆盖。这不仅提高了代码质量,也加速了问题定位和修复的过程。在实际开发中,应充分利用这些工具,确保软件的健壮性和稳定性。...
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,...
"SpringTest_springtest_spring_java_Framework_"这个标题暗示了我们讨论的是关于Spring框架的测试方面,可能是使用Spring进行单元测试或集成测试的一些实践。 描述中的“简单小应用,实现了一些基本的功能”可能是...
【标题】:“元测单试jnuit spring”可能是指使用JUnit和Spring框架进行的单元测试。这通常涉及到Java开发中的测试驱动开发(TDD)和集成测试实践。 【描述】:描述中的重复部分“元测单试jnuit spring”似乎是一种...
本书主要介绍了Spring 3.0的核心内容,不仅讲解了Spring 3.0的基础知识,还深入讨论了Spring IoC容器、Spring AOP、使用Spring JDBC访问数据库、集成Hibernate、Spring的事务管理、Spring MVC、单元测试、敏捷开发...
7. **测试**:在代码测试过程中,我们需要编写单元测试和集成测试。Spring提供了TestNG或JUnit支持,结合Mockito等工具,可以模拟数据源和业务对象,进行无数据库环境下的测试。对于集成测试,可以直接运行应用程序...
7. **单元测试和集成测试**:在Spring框架中,我们可以使用JUnit和Mockito进行单元测试,使用Spring Test和Spring Boot Test进行集成测试。我们将讨论如何编写测试用例,以及如何利用测试驱动开发(TDD)来提高代码...
10. **测试**:Spring提供了JUnit支持,可以方便地对Service和Controller进行单元测试,确保代码质量。 以上就是Spring与Spring MVC整合配置的一些基础知识,实际应用中还需要考虑安全性、性能优化等因素。通过不断...
描述中的链接指向了一篇名为“Spring 2.5+Junit4的单元测试”的博客文章,虽然具体内容未给出,但可以推断这篇文章可能讲述了如何在Spring 2.5版本中集成Junit4进行单元测试的实践和技巧。 标签“源码”意味着我们...
总的来说,Spring Boot测试模块提供了丰富的测试支持,包括集成测试、端到端测试和单元测试,帮助开发者确保他们的Spring Boot应用程序在不同层次上都运行正常。1.5.8.RELEASE版本可能不是最新的,但它仍然是一个...
标题 "testing-si-gateways" 提到的是一个与单元测试和Spring集成网关相关的项目。这表明我们将探讨如何在Spring框架中对服务网关进行单元测试,特别是使用Spring Integration。Spring Integration是Spring生态系统...
此外,书中还将涵盖Spring的测试支持,包括单元测试和集成测试,帮助开发者确保代码质量。Spring提供的TestContext框架简化了测试环境的配置,使得测试用例能够轻松地注入依赖和模拟协作对象。 《Pro Spring PDF》...
在Spring的设计中,还特别注意到了可测试性,设计了丰富的Mock对象和测试工具,极大地方便了单元测试和集成测试,这在现代软件开发中显得尤为重要。 此外,Spring的生态系统非常丰富,与众多其他的开源项目都有良好...
接下来,我们讨论Spring的IoC(Inversion of Control,控制反转)容器。IoC容器是Spring框架的心脏,负责管理对象的生命周期和对象间的依赖关系。当一个类被声明为Spring容器的bean时,IoC容器会负责创建、初始化、...
测试是保证软件质量的重要环节,书里会涵盖Spring Boot的单元测试和集成测试,使用Mockito和WireMock进行模拟测试,以及如何进行性能和压力测试。 最后,本书还会讲解Spring Boot的应用部署,包括本地开发环境的...
7. **测试**:讲解如何使用Spring进行单元测试和集成测试,包括Mock对象、测试注解和测试上下文框架。 8. **工具**:介绍Spring工具集,如Spring Tool Suite,这些工具能提高开发效率并简化项目配置。 9. **模块**...
对于测试,JUnit是单元测试的首选工具,你可以编写测试用例来验证Action或Service层的方法是否正确工作。对于集成测试,可以使用Struts1提供的Mock对象或者Spring的Mockito库,模拟HTTP请求和依赖,确保整个流程的...