知识大全 通过Spring2.5对单元测试的Annotation支持进行TDD开发
Posted 知
篇首语:人无常识,百事难成。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 通过Spring2.5对单元测试的Annotation支持进行TDD开发相关的知识,希望对你有一定的参考价值。
通过Spring2.5对单元测试的Annotation支持进行TDD开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
本文从一个例子出发 根据TDD(测试驱动开发)要求 进行开发 只是用于演示如何使用Spring 提供的基于Annonation方式的IOC实现 进行TDD开发
首先我们来看一下这个例子的要求 开发一个购物车对象 可以添加商品 删除商品 查询已购商口 结账功能
第一步 先来完成添加商品功能 下面就按TDD开发要求 先编写单元测试
下面是增对该功能 编写的测试代码
/** * @author xmatthew * */ @RunWith(SpringJUnit ClassRunner class) @ContextConfiguration(locations = classpath:/applicationContext xml ) @TestExecutionListeners(DependencyInjectionTestExecutionListener class) public class CartTest @Autowired private SuperStore superStore; @Test public void addCommodity() Cart cart = new Cart(); Commodity modity = superStore getCommodity( /*电脑桌*/); cart addCommodity(modity); Assert assertEquals( cart size()); Assert assertTrue(ntains(modity));
当然这个单元测试不能通过(无法编译) 接下来就是编写代码 让单元测试能顺利通过添加 applicationContext xml文件
<?xml version= encoding= UTF ?> <beans xmlns= xmlns:xsi= instance xmlns:context= xsi:schemaLocation= beans xsd context xsd > <context:ponent scan base package= xmatthew spring tdd /> <context:annotation config/> </beans>
Commodity java
/** * @author xmatthew * */ public class Commodity private String id; private String name; private BigDecimal price; /* (non Javadoc) * @see java lang Object#equals(java lang Object) */ @Override public boolean equals(final Object other) if (!(other instanceof Commodity)) return false; Commodity castOther = (Commodity) other; return new EqualsBuilder() append(id castOther id) append(name castOther name) append(price castOther price) isEquals(); /* (non Javadoc) * @see java lang Object#hashCode() */ @Override public int hashCode() return new HashCodeBuilder() append(id) append(name) append(price) toHashCode(); public Commodity(String id String name BigDecimal price) super(); this id = id; this name = name; this price = price; public String getId() return id; public void setId(String id) this id = id; public String getName() return name; public void setName(String name) this name = name; public BigDecimal getPrice() return price; public void setPrice(BigDecimal price) this price = price;
SuperStore java
/** * @author xmatthew * */ public interface SuperStore Commodity getCommodity(String id);
Cart java
/** * @author xmatthew * */ public class Cart List<Commodity> modities = new LinkedList<Commodity>(); public void addCommodity(Commodity modity) modities add(modity); public boolean contains(Commodity modity) // TODO Auto generated method stub return ntains(modity); public int size() // TODO Auto generated method stub return modities size();
/** * @author xmatthew * */ @Service public class WalMart implements SuperStore private Map<String Commodity> modities; public WalMart() super(); modities = new HashMap<String Commodity>( ); modities put( new Commodity( 电脑桌 new BigDecimal( ))); modities put( new Commodity( 电脑椅 new BigDecimal( ))); modities put( new Commodity( 电脑包 new BigDecimal( ))); public Commodity getCommodity(String id) Assert hasText(id id is null ); return modities get(id);增加上面代码 再运行单元测试 测试通过 TDD的基本开方法就类似下面几个步骤
* 编写测试代码
* 运行测试
* 完善(重构)代码
* 再测试
* 最终测试通过
示例比较简单 只是为了演示基于Spring 版本上如何进行TDD开发
我看到在Spring 进行代码的测试变得非常简单
@RunWith(SpringJUnit ClassRunner class)@ContextConfiguration(locations = classpath:/applicationContext xml )@TestExecutionListeners(DependencyInjectionTestExecutionListener class)
上面的代码 就可实现自动加载Spring context
使用Spring的Configuration功能 自动实现依赖注入 感谢Spring Configuration项目 让IOC实现更简单 方便
当然不得不提的就是Junit 测试框架给是给我们编写单元简化了很多
cha138/Article/program/Java/ky/201311/28807相关参考
知识大全 利用spring2.5和Reflection简化测试中的mock[2]
利用spring2.5和Reflection简化测试中的mock[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
知识大全 利用spring2.5和Reflection简化测试中的mock[1]
利用spring2.5和Reflection简化测试中的mock[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
用WatiN对ASP.NET页面进行单元测试 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 单元
使用JUnit对EJB进行单元测试[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用JUnit对EJB进行单元测试[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用JUnit对EJB进行单元测试[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
Spring2.5整合RMI技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Java的RMI
Spring2.5注释驱动与基于注释的MVC 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Sp
知识大全 Spring2.5整合ActiveMQ 5.2(P2P文本消息)
Spring2.5整合ActiveMQ5.2(P2P文本消息) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来
知识大全 Spring2.5访问Session属性的四种策略
Spring2.5访问Session属性的四种策略 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!