深入浅出裸测之道---单元测试的单元化
作者:网络转载 发布时间:[ 2013/3/26 9:53:28 ] 推荐标签:
而MSpec用了自己的名词,分别是Establish, Because, It。看看下面改造之后的测试代码清楚什么意思了。
看代码:
public class When_create_an_exam_by
{
private Establish context =
() =>
{
stub_exam_def = new ExamDef("98");
stub_district = new District("01");
stub_date = new Date(2011, 1, 1);
};
private Because of =
() => subject = new Exam(stub_district, stub_exam_def, stub_date);
private It should_assign_to_properties =
() =>
{
subject.District.ShouldEqual(stub_district);
subject.ExamDef.ShouldEqual(stub_exam_def);
subject.Date.ShouldEqual(stub_date);
};
private static ExamDef stub_exam_def;
private static District stub_district;
private static Date stub_date;
private static Exam subject;
}
再看一看测试运行的结果,明了代码即文档的含义了。
看截图:

从nUnit升级到MSpec,给人一种耳目一新的感觉。开始也许会有些不习惯。但是,一旦习惯之后再也不想回头了。
Rhino Mock --- 我演我
好了,看看第二个问题。一开始,我们依乎不觉得这是个大问题,不是直接创建一个依赖美吗,创建完了呗,一行代码而已。仍然,需要提醒注意,我们是在做商业软件。一旦展开了,一个类不可能只是一、两个类,特别是间接关联的,会更多,拔出萝卜带出泥。拿这个考试类来说,在我们的实际项目中,它还有考试科目列表属性,还通过报考类与考生有间接联系。而报考类又与订单类,事务类有交互有关系。考虑所有这些级联关系,难道我为了测试这个构造赋值功能把所有的类全部创建出来?

sales@spasvo.com