- 浏览: 509246 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (156)
- xml (4)
- web前端 (24)
- jQuery (18)
- java (38)
- SQL (9)
- perl (2)
- OTRS (1)
- GWT (4)
- Linux (32)
- Maven (2)
- Spring (2)
- Oracle Win7 (1)
- css (8)
- eclipse (3)
- mysql (11)
- tomcat (5)
- git (4)
- javascript (22)
- font (1)
- android (1)
- log4j (1)
- email (1)
- sublime plugin (1)
- html (2)
- matches (1)
- php (3)
- apache (3)
- gd (1)
- docker (5)
- rails (1)
- RabbitMQ (1)
- Ubuntu (3)
- L2TP VPN (1)
- nodejs (1)
- oraclejet (1)
- ubutun (1)
- ntp (1)
- ngix (1)
- ssl (1)
- https (1)
- Linux,Debian (2)
- dpkg (1)
- pac (1)
- vi (1)
- vim (1)
- java,http (0)
- httpClient (0)
- shutter (1)
- shell (1)
- redmine (1)
最新评论
-
纵观全局:
配置之后,连接显示不是私密连接
keytool生成证书与Tomcat SSL配置 -
zhuchao_ko:
可以 伪造
java获得ip地址 -
longhua2003:
代码太乱了
java下载文件 -
tomhat:
ccx410 写道 安装gwt报错,unable to ret ...
GWT CellTable -
ccx410:
安装gwt报错,unable to retrieve osgi ...
GWT CellTable
Spring2.5+JUnit4单元测试
单元测试
SpringjunitXMLJPA.要求:
JDK1.5以上(因为Junit4是用注解来实现的)
需要的包
spring-2.5.jar
junit-4.4.jar
spring-test.jar
测试类
package user;
import static org.junit.Assert.fail;
import java.util.Date;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.transaction.TransactionConfiguration;
import com.sample.model.user.User;
import com.sample.service.user.IUserService;
/** 设置要加载的配置文件 */
@ContextConfiguration(
locations={
"classpath:spring/persistenceContext.xml",
"classpath:spring/aopContext.xml",
"classpath:spring/daoContext.xml",
"classpath:spring/serviceContext.xml"
}
)
/** 设置是否回滚数据 */
@TransactionConfiguration(defaultRollback = false)
public class UserTest extends AbstractTransactionalJUnit4SpringContextTests{
/** 设置自动注入的属性 */
@Autowired
private IUserService userService;
@Before
public void setUp() throws Exception {
} @After
public void tearDown() throws Exception {
}
@Test
@Rollback(false)
public void testSaveUser() {
User user=new User();
user.setUsername("zhoujun");
user.setCreatetime(new Date());
userService.saveUser(user);
}
@Test
public void testGetUserById() {
User user=userService.getUserById("1");
Assert.assertEquals(1,user.getId());
System.out.println(user.getUsername());
System.out.println(user.getCreatetime());
}
}
有关Junit4中注解的说明如下:
@ContextConfiguration 用来指定加载的Spring配置文件的位置,会加载默认配置文件
例如下例会加载:classpath:/com/example/MyTest-context.xml文件
package com.example;
@ContextConfiguration
public class MyTest {
// class body...
}@ContextConfiguration 注解有以下两个常用的属性:
•locations:可以通过该属性手工指定 Spring 配置文件所在的位置,可以指定一个或多个 Spring 配置文件。如下所示:
@ContextConfiguration(locations={“xx/yy/beans1.xml”,” xx/yy/beans2.xml”})
•inheritLocations:是否要继承父测试用例类中的 Spring 配置文件,默认为 true。如下面的例子:
@ContextConfiguration(locations={"base-context.xml"})
public class BaseTest {
// ...
}
@ContextConfiguration(locations={"extended-context.xml"})
public class ExtendedTest extends BaseTest {
// ...
}如果 inheritLocations 设置为 false,则 ExtendedTest 仅会使用 extended-context.xml 配置文件,否则将使用 base-context.xml 和 extended-context.xml 这两个配置文件。
在使用所有注释前必须使用@RunWith(SpringJUnit4ClassRunner.class),让测试运行于Spring测试环境
Spring框架在org.springframework.test.annotation 包中提供了常用的Spring特定的注解集,如果你在Java5或以上版本开发,可以在测试中使用它。
@IfProfileValue
提示一下,注解测试只针对特定的测试环境。 如果配置的ProfileValueSource类返回对应的提供者的名称值, 这个测试就可以启动。这个注解可以应用到一个类或者单独的方法。
@IfProfileValue(name=”java.vendor”, value=”Sun Microsystems Inc.”)
public void testProcessWhichRunsOnlyOnSunJvm() {
// some logic that should run only on Java VMs from Sun Microsystems
}
同时@IfProfileValue可配置一个值列表 (使用OR 语义) 来在JUnit环境中获得TestNG的测试组支持。 看下面的例子:
@IfProfileValue(name=”test-groups”, values={”unit-tests”, “integration-tests”})
public void testProcessWhichRunsForUnitOrIntegrationTestGroups() {
// some logic that should run only for unit and integration test groups
}
@ProfileValueSourceConfiguration
类级别注解用来指定当通过@IfProfileValue注解获取已配置的profile值时使用何种ProfileValueSource。 如果@ProfileValueSourceConfiguration没有在测试中声明,将默认使用SystemProfileValueSource。
@ProfileValueSourceConfiguration(CustomProfileValueSource.class)
public class CustomProfileValueSourceTests {
// class body…
}
@DirtiesContext
在测试方法上出现这个注解时,表明底层Spring容器在该方法的执行中被“污染”,从而必须在方法执行结束后重新创建(无论该测试是否通过)。
@DirtiesContext
public void testProcessWhichDirtiesAppCtx() {
// some logic that results in the Spring container being dirtied
}
@ExpectedException
表明被注解方法预期在执行中抛出一个异常。预期异常的类型在注解中给定。如果该异常的实例在测试方法执行中被抛出, 则测试通过。同样的如果该异常实例没有在测试方法执行时抛出,则测试失败。
@ExpectedException(SomeBusinessException.class)
public void testProcessRainyDayScenario() {
// some logic that should result in an Exception being thrown
}
@Timed
表明被注解的测试方法必须在规定的时间区间内执行完成(以毫秒记)。如果测试执行时间超过了规定的时间区间,测试就失败了。
注意该时间区间包括测试方法本身的执行,任何重复测试(参见 @Repeat),还有任何测试fixture的set up或tear down时间。
Spring的@Timed注解与JUnit 4的@Test(timeout=...)支持具有不同的语义。 特别地,鉴于JUnit 4处理测试执行超时(如通过在一个单独的线程中执行测试方法)的方式, 我们不可能在一个事务上下文中的测试方法上使用JUnit的@Test(timeout=...)配置。因此, 如果你想将一个测试方法配置成计时且具事务性的, 你就必须联合使用Spring的@Timed及@Transactional注解。 还值得注意的是@Test(timeout=...)只管测试方法本身执行的次数,如果超出的话立刻就会失败; 然而,@Timed关注的是测试执行的总时间(包括建立和销毁操作以及重复),并且不会令测试失败。
@Timed(millis=1000)
public void testProcessWithOneSecondTimeout() {
// some logic that should not take longer than 1 second to execute
}
@Repeat
表明被注解的测试方法必须重复执行。执行的次数在注解中声明。
注意重复执行范围包括包括测试方法本身的执行,以及任何测试fixture的set up或tear down。
@Repeat(10)
public void testProcessRepeatedly() {
// …
}
@Rollback
表明被注解方法的事务在完成后是否需要被回滚。 如果true,事务将被回滚,否则事务将被提交。 使用@Rollback接口来在类级别覆写配置的默认回滚标志。
@Rollback(false)
public void testProcessWithoutRollback() {
// …
}
@NotTransactional
出现该注解表明测试方法必须不在事务中执行。
@NotTransactional
public void testProcessWithoutTransaction() {
// …
}
Spring TestContext Framework还支持下面这些非特定于测试的注解,并且保持其语义不变。
•@Autowired
•@Qualifier
•@Resource (javax.annotation)如果JSR-250可用
•@PersistenceContext (javax.persistence)如果JPA可用
•@PersistenceUnit (javax.persistence)如果JPA可用
•@Required
•@Transactional
@TestExecutionListeners
定义类级别的元数据,TestExecutionListeners会使用TestContextManager进行注册。 通常,@TestExecutionListeners与@ContextConfiguration会搭配使用。
@ContextConfiguration
@TestExecutionListeners({CustomTestExecutionListener.class, AnotherTestExecutionListener.class})
public class CustomTestExecutionListenerTests {
// class body...
}@TransactionConfiguration
为配置事务性测试定义了类级别的元数据。特别地,如果需要的PlatformTransactionManager不是“transactionManager”的话, 那么可以显式配置驱动事务的PlatformTransactionManager的bean名字。此外, 可以将defaultRollback标志改为false。通常, @TransactionConfiguration与@ContextConfiguration搭配使用。
@ContextConfiguration
@TransactionConfiguration(transactionManager="txMgr", defaultRollback=false)
public class CustomConfiguredTransactionalTests {
// class body...
}@BeforeTransaction
表明被注解的public void方法应该在测试方法的事务开始之前执行, 该事务是通过@Transactional注解来配置的。
@BeforeTransaction
public void beforeTransaction() {
// logic to be executed before a transaction is started
}@AfterTransaction
表明被注解的public void方法应该在测试方法的事务结束之后执行, 该事务是通过@Transactional注解来配置的。
@AfterTransaction
public void afterTransaction() {
// logic to be executed after a transaction has ended
}
发表评论
-
Apache HTTPClient 忽略证书
2019-01-25 15:03 1583/** * httpclient4.5.2版 * ... -
HTTP 返回码
2019-01-24 15:28 424HTTP1.1新增了五种请求方法:OPTIONS、PUT、PA ... -
Java SizeToHuman 大小转换为mb kb tb等
2017-08-21 15:12 1645public class TestSizeToHuman ... -
java常规格式化说明
2016-01-20 17:27 1381转 换 符说 明 ... -
java验证是否包含特殊字符/\:*?"<>
2016-01-05 15:25 8763public class MatchTest { ... -
JSP和JSTL获取服务器参数
2015-09-11 13:57 1197<%@ page language="java ... -
java计算时间差比较时间大小
2015-05-20 10:53 1116今天需要比较时间在网上找到然后写下: 比如:现在是:200 ... -
java发邮件
2014-11-19 15:37 1221一、 import java.util.Date; im ... -
java log4j.properties
2014-11-18 09:30 917log4j.properties配置文件如下: log4j ... -
java获得ip地址
2014-11-17 18:18 1328public String getIpAddr(Htt ... -
java下载文件
2014-11-07 10:57 1097// 文件名称中文乱码new String(filename. ... -
Android中RelativeLayout各个属性的含义
2014-10-11 15:06 873android:layout_above="@id ... -
Http发送请求
2014-09-17 15:01 899package wzh.Http; import j ... -
导出数据到excel
2014-09-03 16:20 1218/** * */ package com.chin ... -
Spring MVC @RequestBody接收JSON报HTTP 415/400问题的解决
2014-08-27 13:06 3804Ajax请求传@RequestBody(接收JSON)参数时, ... -
动态创建和修改Spring的bean配置文件
2014-08-06 18:23 43831、如果只是创建一个XML文件,那么只需要导入dom4j-1. ... -
request获取各种路径
2014-08-06 17:06 948从request获取各种路径总结 request.getRea ... -
Linux下设置开机自启动tomcat
2014-07-23 11:51 1949centos7 设置tomcat开机自启动 在tomcat/ ... -
Linux 设置环境变量JAVA_HOME ,鼠标右键打开终端,修改hostname
2014-07-03 14:21 1771一、ubuntu永久修改主机名 1、查看主机名 在Ubunt ... -
keytool生成证书与Tomcat SSL配置
2014-07-02 17:03 18171一、Keytool介绍 Keytool是一个Java数据证书 ...
相关推荐
Junit4+Spring2.5单元测试代码示例同时也适用注解注入的形式测试(前提要导好测试的包哦,包MyEclipce自带了)
### Spring2.5 + Struts1.3.8 + Hibernate3.0 整合知识点详解 #### 一、概述 Spring2.5 + Struts1.3.8 + Hibernate3.0 (简称SSH)整合是一种典型的Java Web开发模式,旨在通过组合这三种技术框架来构建高性能、易于...
5. 测试和运行:通过JUnit进行单元测试,确保各层功能正常,然后部署应用,测试整个流程是否顺畅。 这个框架组合的优点在于,Struts处理用户请求,Spring管理业务逻辑和服务,Hibernate处理数据持久化,三者分工...
本项目"Structs2.0+Spring2.5+Ibatis整合例子"就是这样一个示例,展示了如何将Struts2、Spring和iBatis这三个流行的技术栈整合在一起,以实现MVC(模型-视图-控制器)架构。以下将详细阐述这三个框架的核心功能以及...
标题 "Spring2.5 + JPA(Hibernate)实现" 指的是在Spring框架的2.5版本中集成Java Persistence API (JPA) 和Hibernate ORM框架来管理数据库操作。这通常涉及利用Spring的IoC(Inversion of Control)和AOP(Aspect ...
5. **测试验证**:编写JUnit测试用例,验证Action、Service和Mapper的正确性,确保整个整合过程无误。 这个名为SSIDemo的项目很可能是提供了一个整合这三个框架的示例应用。开发者可以通过下载该项目,学习如何在...
这个"Spring2.5+Structs2+Hibernate3.3框架例子"是一个经典的组合,旨在帮助初学者理解这些框架如何协同工作,构建高效的企业级应用程序。 **Spring框架**:Spring 是一个全面的后端开发框架,它提供了依赖注入(DI...
同时,通过Junit进行单元测试,确保代码的正确性和稳定性。 首先,Spring是Java应用的依赖注入(DI)和面向切面编程(AOP)框架,它简化了配置管理,提供了事务控制,以及与各种持久层技术的集成,包括iBatis。在这...
6. **测试整合**: 编写JUnit测试用例,验证Action、Service、DAO三层是否能正常工作。 **常见问题及解决方案**: 1. **空指针异常**: 可能是由于Spring没有正确注入bean,检查配置文件中的bean声明和引用。 2. **...
9. **测试**:编写Junit测试用例,覆盖业务逻辑和DAO层的方法,确保功能的正确性。 通过这样的整合,开发者可以享受到各框架的特性,比如Spring的依赖注入,Struts的MVC处理,以及iBatis的灵活数据库操作,从而提高...
5. **测试**:通过编写JUnit测试用例或手动测试,验证SSH框架是否正确集成,功能是否正常。 SSH框架的集成提供了强大的开发能力,但同时也需要开发者具备一定的技术背景和经验。随着技术的发展,现代项目更多地转向...
- 使用模拟请求工具如JUnit、TestNG,或集成测试框架如Selenium,进行端到端的测试。 以上就是"Struts1 增删改查+分页"项目涉及的主要知识点,涵盖了Struts1框架的基本原理和核心功能。通过这个项目,开发者可以...
8. **测试支持**:Spring 2.5提供了更完善的测试工具,如`@RunWith(SpringJUnit4ClassRunner.class)`和`@ContextConfiguration`注解,使得基于Spring的应用测试更加便捷。 9. **集成其他框架**:Spring 2.5加强了与...
例如,@RunWith(SpringJUnit4ClassRunner.class) 注解可以启动 Spring 上下文,便于测试 Bean 间的协作。 9. **JMS(Java Message Service)支持**:Spring 2.5 支持消息驱动的应用,通过 JMSTemplate 和 Message...
5. **JUnit**:JUnit是Java语言的一个单元测试框架,帮助开发者编写和执行测试用例,确保代码的质量和稳定性。它是敏捷开发中不可或缺的一部分。 6. **读取Excel**:在Java中,通常使用Apache POI库来读取和写入...
在本工程中,我们可以看到如何设置Junit测试类,对Spring和Hibernate的集成功能进行验证。 2. Hibernate3.2:作为一款强大的对象关系映射(ORM)框架,Hibernate3.2简化了数据库操作,使得开发者可以使用Java对象而...
在集成测试方面,Spring Test模块得到了增强,提供了更多的测试支持,包括模拟对象、Web应用测试上下文以及对JUnit和TestNG的集成。 总的来说,"Spring2.5中文框架开发手册"是深入了解和掌握Spring2.5版本特性和...
7. **测试框架**:加强了对JUnit和Mockito等测试工具的集成,便于编写单元测试和集成测试。 8. **国际化支持**:通过`MessageSource`接口,Spring 2.5提供了强大的国际化支持,方便应用根据不同地区显示不同语言的...
在Spring框架中,TestContext模块为开发者提供了强大的测试支持,特别是在Spring 2.5版本中,这个测试框架进一步增强了测试的便利性和可扩展性。它允许我们以声明式的方式配置和管理测试环境,包括bean的初始化、...
提供了更好的测试支持,包括`@RunWith(SpringJUnit4ClassRunner.class)`和`@ContextConfiguration`注解,使单元测试和集成测试更加方便。 在压缩包"spring2.5需要的jar"中,可能包含了一系列Spring框架的核心库,...