【译】How to Name Test Methods

原文链接:http://blogs.msdn.com/b/jsocha/archive/2012/03/11/how-to-name-test-methods.aspx

我真的非常喜欢BDD(Behavior Driven Development),因为它的结构能够帮助我们在书写单元测试的时候专注于行为而不是实现。前不久我将我写了一篇博文发送给我之前在pattrens&pratices小组的同事Daniel Cazzulino:Writing meaningful, self-documenting, behavior-oriented tests。另外一个好的邮件,有更多关于BDD信息的: Approaching Behavior Driven Development (BDD) from a Test Driven Development (TDD) perspective.
 
结果,我开始用这样的名字来命名我的测试,使用下划线来分割不同的BDD关键字:
 
[TestMethod]
[Description("Column order is different,but tables match")]
public void ShouNotThrow_WhenAreEqual_GivenSameData_ButColumnOrderDifferrnt()
 
这个在VS2010中工作得非常好,因为我可以展示列的描述。测试结果的方式包含一个很容易读取的描述,就像Given/When/Then 在测试之后。
 

image

然后一起来到VS2011 Beta. 他们已经完全改变了测试的结果。这个新的版本,至少在这个beta版中,并不支持Description特性,所以你只是看到了测试方法的名称,测试的结果如下:
image

重新思考测试方法的命名
我已经从我的另外一个p&p小组的前同事Peter Provost那里得到了一个不错的对话,Peter Provost是一个项目经理,就职于测试工作。他建议我把BDD描述放到Description特性。我决定去试一试,到目前为止我喜欢这个改变。

// Column order is different, but tables match
[TestMethod]
[Description()"Given two tables Ans same data But diffenrent column order | When Tables ..."]
public void ColumnOrderDoensntMatter()

下面是这个新的测试方法的运行效果:
image

一个好的结果就是BDD描述在读取时更加容易,它可以变得更加丰富而不使用过长的方法名。

奇思异想
我想他将会非常酷如果这里有一个丰富的工具来展示类的信息和Description特性。如果我可以书写一个VS的扩展来格式化我的描述到用粗体的Given,When,和Then在多个行中,我也会变得非常酷。
posted @ 2012-03-17 12:28  xanthodont  阅读(288)  评论(0编辑  收藏  举报