我举个例子:
要求:按照以下规则构造一块材料:
在给定的 <100 => 材料是绿色的
100 < 在 <300=> 的材料是黄色
的 > 300=> 的材料是红色的
我的测试课:
class MaterialTest{
MaterialConstructor materialCons
public void testBuild(){
materialCons.setAmount(150);
Material material=materialCons.build();
assertEqual(material.getColor(),"Yellow");
}
}
从知道我不知道如何实现 materialCons.build(); 经过设计和分析,我实现了 MaterialCosntructor,如下所示:
public class MaterialConstructor {
private Helper1 helper1;
private Helper2 helper2
MaterialConstructor (Helper1 help1, Helper2 help2){
.................
}
public Material build(Double among){
part1=helper1.builpart(among);
return helper2.construct(part1);
}
}
在我最初的测试类中,我必须包含如下代码:
helper1=createMock(Helper1)
helper2=createMock(Helper2)
materialCons=new MaterialConstructor (helper1, helper2)
.....................
expected(helper1.builpart(150)).andReturn(some result)
expected(helper2.construct(some result)).andReturn("Yellow")
结果我们可以得到这个更新的类测试:
class MaterialTest{
MaterialConstructor materialCons
public void testBuild(){
helper1=createMock(Helper1)
helper2=createMock(Helper2)
materialCons=new MaterialConstructor (helper1, helper2)
expected(helper1.builpart(150)).andReturn(some result)
expected(helper2.construct(some result)).andReturn("Yellow")
materialCons.setAmount(150);
Material material=materialCons.build();
assertEqual(material.getColor(),"Yellow");
}
}
因此我的测试代码将在编写我的源代码后更新!
这会出现很多次(因为在规范时很难知道必须使用哪个依赖类来解决问题)。那么单元测试类在编写源代码后将永远过时!