知识大全 通过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页面进行单元测试

用WatiN对ASP.NET页面进行单元测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  单元

知识大全 使用JUnit对EJB进行单元测试[3]

使用JUnit对EJB进行单元测试[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用JUnit对EJB进行单元测试[2]

使用JUnit对EJB进行单元测试[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 使用JUnit对EJB进行单元测试[1]

使用JUnit对EJB进行单元测试[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Spring2.5整合RMI技术

Spring2.5整合RMI技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java的RMI

知识大全 Spring2.5注释驱动与基于注释的MVC

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)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!