BDD也是在接触spock后才了解到的一种开发方式,或者更直白的说是ut的一种编写思路。
过往在写ut时会遵从:行为预设(Mock)、输入(Dataprovider)、触发、预期输出(Assert)的方式来进行单测的编排。对比BDD或者TDD方式,已经脱离ut初衷,变成为了单测而编写单测的行为。
Spock从概念上就颠覆了我之前对单测的认知。所有spock的ut都要继承specification 这个类,它定义了一种结构,就是题目所说的BDD。以BDD的方式编写的不仅仅是一个测试用例,而是一个对对应代码所提供功能的准确描述。以及当使用这种思想在编写测试用例时,头脑中不会再去关注原方法中的逻辑细节(即不会射出箭后再画靶),同时对于无法清晰描述其功能的方法产生重构的念头,以及会极力避免带有副作用的方法。