是的,这不是必须的,可以说是我自己的原因,不会Java。但是,你也可以看作是一种重构的场景,不是吗?
更改的代码就不再放了,比较简单,与C#和Java的区别有关,留个连接 SocialID.cs。可是,我的测试代码却很重要。可能很多人会诟病我的测试框架(Machine.Specification)和代码风格。前者,我想以后会多介绍MSpec和BDD让大家根熟悉,后者,只能是希望大家适应了。
namespace Skight.eLiteWeb.Domain.Specs { public class when_create_social_id_with_proper_input { private Because of = () => subject = new SocialID("43010319801120753"); private It should_get_birth_date_correctly = () => subject.getBirthDate().ShouldEqual(new DateTime(1980, 11, 20)); private static SocialID subject; } }
原来,看似相同的语法Substring,第二个参数却有不同的含义。再经典不过的场景了,测试可以理顺这个过程。
private String getBirthDayPart() { return this.cardNumber.substring(6, 14); }改为
private String getBirthDayPart() { return this.cardNumber.Substring(6, 8); }
好了,阶段性的成果,一个测试/行为就可以标示为一个里程碑,今天就到这里了,你的支持,让我明天继续。
哦,少等. 最后一步,确实最重要的一步. 给我们客户(这中情况下,我的客户是其他开发人员,是的,高级程序员的客户就是其他中级,初级程序员,换一下思想吧)的测试/功能报告,如下:
(本文版权属于© 2012 - 2013 予沁安 | 转载请注明作者和出处)