我来自TDD的思维方式,现在转向BDD。我知道使用BDD是为了确保软件行为和业务目标得到满足。
让我困惑的是,如果我开始使用BDD代替TDD,似乎我不能在如此低的级别进行测试。例如,在以TDD思维方式编写测试时,我可能会测试属性是否已附加到作用域中:
让我困惑的是,如果我开始使用BDD代替TDD,似乎我不能在如此低的级别进行测试。例如,在以TDD思维方式编写测试时,我可能会测试属性是否已附加到作用域中:
it('should attach properties to scope', function () {
expect(MainCtrl.items.length).toEqual(1);
});
在做这个的时候,另一个开发者知道作用域分配是预期和未来使用所需的,这样如果他们删除了分配或更改了默认值等,就可以节省一些调试时间。
这个例子没有定义行为,因此不能被视为BDD。当然,我可以重新编写测试描述,使其更加面向行为,比如,“当页面加载时,设置属性以供稍后使用,以便用户可以做某些事情......”,但这似乎太抽象了。
同时使用TDD和BDD是一种惯用做法吗?是否可以通过使用BDD来定义参与项目的所有人(包括非技术人员)的行为,而专门使用TDD来供开发人员使用?