将基于Spring的UnitTest集成到Maven中
2013-04-06 15:50
399 查看
在进行persistence layer的开发时,我们总是要写写UnitTest来验证我们提供给上一层的API是经过验证了的。通常我们需要单独的为UnitTest编写一份独立的Spring
ApplicationContext配置文件,基于Maven约定大于配置的实践,我们将Spring ApplicationContext配置文件放在项目的src/test/resources下,Test
Source Code放在sr/test/java下。
Spring为我们提供一个非常方便的Annotation类@ContextConfiguration,可以使用该Annotation告诉Spring将在何处载入ApplicationContext配置文件以便运行测试代码。将此Annotation配置在UnitTest类声明上,则UnitTest类就可方便地利用Spring来编写测试用例了。
下面为一UnitTest实例:
如果在运行Unitest中需要loadtimeweaver功能(比如你的ORM框架使用的是eclipselink),则在Maven的pom中需要添加如下plugin并指定argLine,将javaagent指向spring-agent.jar。
以下为Spring ApplicationContext测试配置文件:
ApplicationContext配置文件,基于Maven约定大于配置的实践,我们将Spring ApplicationContext配置文件放在项目的src/test/resources下,Test
Source Code放在sr/test/java下。
Spring为我们提供一个非常方便的Annotation类@ContextConfiguration,可以使用该Annotation告诉Spring将在何处载入ApplicationContext配置文件以便运行测试代码。将此Annotation配置在UnitTest类声明上,则UnitTest类就可方便地利用Spring来编写测试用例了。
下面为一UnitTest实例:
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath*:/forum-repository-test.xml" }) public class JpaUserRepositoryTest { @Autowired private UserRepository userRepository; @Test public void testGetUserByName() { String name = "Wang lu"; User user = userRepository.getUserByName(name); Assert.assertEquals(name, user.getUserName()); } }
如果在运行Unitest中需要loadtimeweaver功能(比如你的ORM框架使用的是eclipselink),则在Maven的pom中需要添加如下plugin并指定argLine,将javaagent指向spring-agent.jar。
<build> … <plugins> … </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <configuration> <forkMode>once</forkMode> <argLine> -javaagent:{spring-agent.jar path} </argLine> <useSystemClassloader>true</useSystemClassloader> </configuration> </plugin> </plugins> </build>
以下为Spring ApplicationContext测试配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:component-scan base-package="com.lulusoft.forum.infrastructure.repositories"></context:component-scan> <bean id="frmDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@//xiechangming:1521/xiech2" p:username="htl_owner" p:password="htlowner" /> <bean id="forumEntityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitName" value="forumPU" /> <property name="dataSource" ref="frmDataSource" /> <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> <property name="loadTimeWeaver"> <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" /> </property> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter"> <property name="generateDdl" value="false" /> <property name="database" value="ORACLE" /> <property name="databasePlatform" value="org.eclipse.persistence.platform.database.oracle.Oracle11Platform" /> </bean> </property> </bean> </beans>
相关文章推荐
- 基于Maven在Spring中集成CXF Web Service框架
- 基于Maven在Spring中集成CXF Web Service框架
- 基于Maven在Spring中集成CXF,发布Web Service
- dbunit-spring-test和maven-dbunit-plugin使用
- 基于Maven环境进行Spring集成CXF WebService框架
- 基于maven的springmvc + spring + ibatis 集成
- spring+struts+hibernate集成环境(基于maven项目搭建)
- 基于Maven在Spring中集成CXF,发布Web Service
- 基于maven的mybatis+springmvc环境搭建以及集成bootstraps
- 基于maven发送邮件系列(2)---用spring的timer实现定时发送邮件
- 009 spring mvc controller unit test
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之四:JdbcTemplate的事务管理
- 搭建基于springmvc+freemarker+maven的web项目
- 第四章:Dubbo整合maven+spring+springmvc+mybatis之mybatis集成
- Struts2+Spring的UnitTest编写(使用StrutsTestCase的子类StrutsSpringTestCase)
- spring+springMvc+activeMq+maven+mybaits(基于全注解)
- Spring Test, JUnit, Mockito, Hamcrest 集成 Web 测试
- springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】
- maven_spring_test 错误和注意事项汇总
- Apache Shiro之实际运用(整合到Spring中)将Shiro整到SSM中(基于maven)