登录 |
  • 注册
  • XP的十二种方法以及四个核心价值

    2008年08月25日17:21:34 星期一 | 作者:marcian

    1. 有计划的开发(The Planning Game):通过结合使用优先级”故事”和技术估算,确定下一版本的功能
    2. 小版本(Small Release):以小的增量版本经常向客户发布软件
    3. 隐喻(System Metaphor) :隐喻是一个简单、共享的”故事”或描述,说明系统如何工作
    4. 简单设计(Simple Design):通过保持代码简单从而保证设计简单。不断的在代码中寻找复杂点并且立刻进行移除
    5. 测试驱动开发(TDD):用户编写测试内容以对”故事”进行测试。程序员编写测试内容来发现代码中的任何问题。在编写代码前先编写测试内容
    6. 重构(Refractoring):这是一项简化技术,用来移除代码中的重复内容和复杂之处
    7. 结对编程(Pair programming):团队中的两个成员使用同一台计算机开发所有的代码。一个人编写代码或者驱动,另一个人同时审查代码的正确性和可理解性
    8. 集体代码所有权(Collective Code Ownership):任何人都拥有所有的代码。这就意味这每个人都可以在任何时候变更任何代码
    9. 持续集成(Continuous Integration):每天多次创建和集成系统,只要任何实现任务完成就要进行
    10. 每周 40 个小时(40-hour Week):程序员在疲劳时无法保证最高效率。连续两周加班是绝对不允许的
    11. 现场客户(On-site Customer):一名真实的客户全时工作于开发环境中,帮助定义系统、编写测试内容并回答问题
    12. 编码标准(Code Standards):程序员采用一致的编码标准证

    极限编程中有四个核心价值

    沟通(Communication)、简单(Simplicity)、反馈(Feedback)和勇气(Courage)。

    EasyMock初探

    2008年08月12日15:38:44 星期二 | 作者:marcian

    EasyMock是用于JUnit中的虚拟测试辅助包,它提供对interface类的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令mock对象返回指定的值或抛出指定异常。

    EasyMock的主页:http://www.easymock.org

    一段简单的代码:

    接口:

    public interface Calculator {
    
    	public int add(int number1,int number2);
    
    	public int sub(int number1,int number2);
    }

    调用类:

    public class Bank {
    
    	private Calculator cc;
    
    	public void setCc(Calculator cc)
    	{
    		this.cc=cc;
    	}
    
    	public int  add(int number1,int number2)
    	{
    		return cc.add(number1, number2);
    	}
    
    	public int sub(int number1,int number2)
    	{
    		return cc.sub(number1, number2);
    	}
    
    }

    测试类:

    import junit.Calculator;
    import static org.junit.Assert.*;
    import org.junit.Before;
    import org.junit.Test;
    import static org.easymock.EasyMock.aryEq;
    import static org.easymock.EasyMock.createMock;
    import static org.easymock.EasyMock.expect;
    import static org.easymock.EasyMock.expectLastCall;
    import static org.easymock.EasyMock.replay;
    import static org.easymock.EasyMock.verify;
    import java.util.*;
    public class TestCalculator {
    
    	private Calculator mock;
    	private Bank bank;
    
    	@Before
    	public void setUp() throws Exception {
    
    		mock=createMock(Calculator.class);
    		bank=new Bank();
    		bank.setCc(mock);
    
    	}
    
    	@Test
    	public void testAdd() {
    		expect(mock.add(1,2)).andReturn(4);
    		replay(mock);
    		assertEquals(bank.add(1, 2),3);
    		verify(mock);
    	}
    
    }