首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

经过Spring2.5对单元测试的Annotation支持进行TDD开发

2012-09-07 
通过Spring2.5对单元测试的Annotation支持进行TDD开发本文从一个例子出发,根据TDD(测试驱动开发)要求,进行

通过Spring2.5对单元测试的Annotation支持进行TDD开发

本文从一个例子出发,根据TDD(测试驱动开发)要求,进行开发。只是用于演示如何使用Spring2.5提供的基于Annonation方式的IOC实现,进行TDD开发。

??? 首先我们来看一下这个例子的要求:开发一个购物车对象,可以添加商品,删除商品,查询已购商口,结账功能。

??? 第一步,先来完成添加商品功能,下面就按TDD开发要求,先编写单元测试:

??? 下面是增对该功能,编写的测试代码

  /**  * @author xmatthew  *  */  @RunWith(SpringJUnit4ClassRunner.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 commodity = superStore.getCommodity("1"/*电脑桌*/);         cart.addCommodity(commodity);                  Assert.assertEquals(1, cart.size());         Assert.assertTrue(cart.contains(commodity));              } }

?

?

?1?/**
?2??*?@author?xmatthew
?3??*
?4??*/
?5?@RunWith(SpringJUnit4ClassRunner.class)
?6?@ContextConfiguration(locations?=?{"classpath:/applicationContext.xml"})
?7?@TestExecutionListeners({DependencyInjectionTestExecutionListener.class})
?8?public?class?CartTest?{
?9?
10?????@Autowired
11?????private?SuperStore?superStore;
12?????
13?????@Test
14?????public?void?addCommodity()?{
15?
16?????????Cart?cart?=?new?Cart();
17?????????Commodity?commodity?=?superStore.getCommodity("1"/*电脑桌*/);
18?????????cart.addCommodity(commodity);
19?????????
20?????????Assert.assertEquals(1,?cart.size());
21?????????Assert.assertTrue(cart.contains(commodity));
22?????????
23?????}
24?}

?

??? 当然这个单元测试不能通过(无法编译)。接下来就是编写代码,让单元测试能顺利通过添加 applicationContext.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:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context-2.5.xsd">        <context:component-scan base-package="com.xmatthew.spring.tdd"/>     <context:annotation-config/>    </beans> 

?

?

?1?<?xml?version="1.0"?encoding="UTF-8"?>
?2?<beans?xmlns="http://www.springframework.org/schema/beans"
?3????????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?4????????xmlns:context="http://www.springframework.org/schema/context"
?5????????xsi:schemaLocation="http://www.springframework.org/schema/beans
?6????????????http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
?7????????????http://www.springframework.org/schema/context
?8????????????http://www.springframework.org/schema/context/spring-context-2.5.xsd">
?9?
10??
11?????<context:component-scan?base-package="com.xmatthew.spring.tdd"/>
12?????<context:annotation-config/>
13?
14??
15?</beans>
16?

?

??? 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;     }           } 

?

?

?1?/**
?2??*?@author?xmatthew
?3??*
?4??*/
?5?public?class?Commodity?{
?6?
?7?????private?String?id;
?8?????private?String?name;
?9?????private?BigDecimal?price;
10?????
11?????/*?(non-Javadoc)
12??????*?@see?java.lang.Object#equals(java.lang.Object)
13??????*/
14?????@Override
15?????public?boolean?equals(final?Object?other)?{
16?????????if?(!(other?instanceof?Commodity))
17?????????????return?false;
18?????????Commodity?castOther?=?(Commodity)?other;
19?????????return?new?EqualsBuilder().append(id,?castOther.id).append(name,
20?????????????????castOther.name).append(price,?castOther.price).isEquals();
21?????}
22?
23?????/*?(non-Javadoc)
24??????*?@see?java.lang.Object#hashCode()
25??????*/
26?????@Override
27?????public?int?hashCode()?{
28?????????return?new?HashCodeBuilder().append(id).append(name).append(price)
29?????????????????.toHashCode();
30?????}
31?
32?????public?Commodity(String?id,?String?name,?BigDecimal?price)?{
33?????????super();
34?????????this.id?=?id;
35?????????this.name?=?name;
36?????????this.price?=?price;
37?????}
38?
39?????public?String?getId()?{
40?????????return?id;
41?????}
42?
43?????public?void?setId(String?id)?{
44?????????this.id?=?id;
45?????}
46?
47?????public?String?getName()?{
48?????????return?name;
49?????}
50?
51?????public?void?setName(String?name)?{
52?????????this.name?=?name;
53?????}
54?
55?????public?BigDecimal?getPrice()?{
56?????????return?price;
57?????}
58?
59?????public?void?setPrice(BigDecimal?price)?{
60?????????this.price?=?price;
61?????}
62?????
63?????
64?}
65?

?

??? SuperStore.java

 /**  * @author xmatthew  *  */ public interface SuperStore {           Commodity getCommodity(String id); }

?

?

1?/**
2??*?@author?xmatthew
3??*
4??*/
5?public?interface?SuperStore?{
6?
7?????
8?????Commodity?getCommodity(String?id);
9?}

热点排行