javascript
Spring 3使用JUnit 4进行测试– ContextConfiguration和AbstractTransactionalJUnit4SpringContextTests...
在這篇文章中,我將嘗試填補這一空白,并撰寫一篇簡潔而簡單的文章,介紹如何使用Junit 4測試spring 3應用程序。Ta使其更易于閱讀和遍歷,我不會使用現在很大的應用程序但我將使用viralpatel提供的樣本。 下載項目的鏈接是這里 。
下載此應用程序并將其導入eclipse。
在您的數據庫中執行以下命令:
create database contact; use contact; CREATE TABLE CONTACTS (id INT PRIMARY KEY AUTO_INCREMENT,firstname VARCHAR(30),lastname VARCHAR(30),telephone VARCHAR(15),email VARCHAR(30),created TIMESTAMP DEFAULT NOW() );在pom.xml中添加以下依賴項:
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jpa</artifactId><version>1.0.1.RELEASE</version> </dependency> <dependency><groupId>org.junit</groupId><artifactId>com.springsource.org.junit</artifactId><version>4.7.0</version><scope>test</scope> </dependency> <dependency><groupId>org.springframework</groupId><artifactId>org.springframework.test</artifactId><version>${org.springframework.version}</version><scope>test</scope> </dependency> <dependency> <groupId>javax.transaction</groupId><artifactId>com.springsource.javax.transaction</artifactId><version>1.1.0</version> </dependency>還為存儲庫添加以下內容:
<repositories><repository><id>com.springsource.repository.bundles.release</id><name>SpringSource Enterprise Bundle Repository - SpringSource Releases</name><url>http://repository.springsource.com/maven/bundles/release</url></repository><repository><id>com.springsource.repository.bundles.external</id><name>SpringSource Enterprise Bundle Repository - External Releases</name><url>http://repository.springsource.com/maven/bundles/external</url></repository><repository><id>com.springsource.repository.bundles.milestone</id><name>SpringSource Enterprise Bundle Repository - SpringSource Milestones</name><url>http://repository.springsource.com/maven/bundles/milestone</url></repository><repository><id>com.springsource.repository.bundles.snapshot</id><name>SpringSource Enterprise Bundle Repository - Snapshot Releases</name><url>http://repository.springsource.com/maven/bundles/snapshot</url></repository><repository><id>repository.springframework.maven.release</id><name>Spring Framework Maven Release Repository</name><url>http://maven.springframework.org/release</url></repository><repository><id>repository.springframework.maven.milestone</id><name>Spring Framework Maven Milestone Repository</name><url>http://maven.springframework.org/milestone</url></repository><repository><id>repository.springframework.maven.snapshot</id><name>Spring Framework Maven Snapshot Repository</name><url>http://maven.springframework.org/snapshot</url></repository><repository><id>jboss</id><name>JBoss repository</name><url>https://repository.jboss.org/nexus/content/repositories/releases</url></repository> </repositories> 在目錄src / test / java下創建以下軟件包:
net.viralpatel.contact.form
在剛創建的包中,創建一個名為:
抽象接觸測試
在src / test / resources下創建以下內容:
凈/ viralpatel /聯系人/表格
在其中創建以下文件:
AbstractContactTests-context.xml
注意! 確保目錄,軟件包,類和xml文件的創建位置與上述位置完全相同。 您將看到xml文件使用測試類的名稱加上“ -context.xml”,并且該文件是在相同目錄結構下創建的。 這很重要,因為spring會自動在指定目錄下查找具有指定名稱的xml文件。
現在,在AbstractContactTests類中插入以下內容:
package net.viralpatel.contact.form;import net.viralpatel.contact.dao.ContactDAO; import net.viralpatel.contact.service.ContactService; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;@ContextConfiguration public class AbstractContactTests extends AbstractTransactionalJUnit4SpringContextTests {@Autowiredprotected ContactDAO contact;@Autowiredprotected ContactService contactService;@Testpublic void sampleTest(){System.out.println("Number of rows is: " + contactService.listContact().size());System.out.println("Creating a new contact");Contact cont = new Contact();cont.setEmail("giannis@gmail.com");cont.setLastname("ntantis");cont.setFirstname("ioannis");cont.setTelephone("00306985587996");System.out.println("Before saving contact");contactService.addContact(cont);System.out.println("After saving contact. Id if contact is: " + cont.getId());System.out.println("Number of rows now is: " + contactService.listContact().size());} }@ContextConfiguration注釋告訴spring如何加載和配置應用程序上下文。 我們還可以告訴spring在哪里可以找到文件,例如:
@ContextConfiguration(locations = {“ example / test-context.xml”},loader = CustomContextLoader.class)
通過不提供任何參數,spring將在與類包相同的目錄下查找xml文件,并在名為class.name-context.xml的文件中查找(記住上面的提示)。
請注意,我們的類從org.springframework.test.context.junit4擴展了AbstractTransactionalJUnit4SpringContextTests 。 通過擴展此類,我們在類級別為方法提供了事務支持。 如果我們不這樣做,我們需要事務支持,則必須使用@Transactional注釋方法,或者使用@TransactionConfiguration注釋配置事務管理器。
在AbstractContactTests-context.xml中放入以下內容:
<?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:p="http://www.springframework.org/schema/p"xmlns:context="http://www.springframework.org/schema/context"xmlns:jdbc="http://www.springframework.org/schema/jdbc"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"><context:property-placeholder location="classpath:jdbc.properties"/><context:annotation-config/><tx:annotation-driven/><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://localhost:3306/contact"p:username="root" p:password="123456"/><bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation"><value>classpath:hibernate.cfg.xml</value></property><property name="configurationClass"><value>org.hibernate.cfg.AnnotationConfiguration</value></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">${jdbc.dialect}</prop><prop key="hibernate.show_sql">true</prop></props></property></bean><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><bean id="contactDAO" class="net.viralpatel.contact.dao.ContactDAOImpl"></bean><bean id="contactService" class="net.viralpatel.contact.service.ContactServiceImpl"></bean> </beans>在這里,您將看到spring-servlet.xml中定義的許多定義。 在我的示例中,它們與spring-servlet.xml相同,但是您可以隨意更改它們。 這樣,Spring就有機會為測試過程創建不同的數據源,甚至為每個測試類創建不同的數據源。
現在,執行AbstractContactTests類作為junit測試。 您應該獲得以下輸出:
Hibernate: select contact0_.ID as ID0_, contact0_.EMAIL as EMAIL0_, contact0_.FIRSTNAME as FIRSTNAME0_, contact0_.LASTNAME as LASTNAME0_, contact0_.TELEPHONE as TELEPHONE0_ from CONTACTS contact0_ Number of rows is: 0 Creating a new contact Before saving contact Hibernate: insert into CONTACTS (EMAIL, FIRSTNAME, LASTNAME, TELEPHONE) values (?, ?, ?, ?) After saving contact. Id if contact is: 2 Hibernate: select contact0_.ID as ID0_, contact0_.EMAIL as EMAIL0_, contact0_.FIRSTNAME as FIRSTNAME0_, contact0_.LASTNAME as LASTNAME0_, contact0_.TELEPHONE as TELEPHONE0_ from CONTACTS contact0_ Number of rows now is: 1多數民眾贊成在所有您需要的人。 祝您編程愉快,別忘了分享!
參考: 使用JUnit 4進行Spring 3測試。使用來自Giannisapi博客的 JCG合作伙伴 Ioannis Ntantis的@ContextConfiguration和AbstractTransactionalJUnit4SpringContextTests 。
相關文章 :- JUnit 4.9(測試版3)中的規則
- 單元和集成測試的代碼覆蓋率
- Spring MVC3 Hibernate CRUD示例應用程序
- 將Jersey與Spring整合
- Spring,Quartz和JavaMail集成教程
- Spring聲明式事務示例
- Java教程和Android教程列表
翻譯自: https://www.javacodegeeks.com/2011/10/spring-3-testing-with-junit-4.html
總結
以上是生活随笔為你收集整理的Spring 3使用JUnit 4进行测试– ContextConfiguration和AbstractTransactionalJUnit4SpringContextTests...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 焊接电脑主板热风枪温度(主板拆焊热风枪要
- 下一篇: gradle idea java ssm