我已經看到了對我來說兩種BDD方法。差取決於的「時」的位置:BDD和「何時」的位置
在方法1中,當是本說明書的一部分:
AnEmptyStack.isNoLongerEmptyAfterPush
在純的「給定的時,然後」術語是這樣的:
「給定一個空棧,當它被推入時,它不再是空的。「
所以「時」,是本說明書的方法的一部分:
isNoLongerEmptyAfterPush(){
stack.push(anObject);
Assert.notEmpty(stack);
}
在方法2中,當在類級別被定義。也就是說,通常在設置中調用何時。
class WhenAnEmptyStackIsPushed(){
setup(){
stack.push();
}
public void thenItIsNotEmpty(){
assert(stack.notEmpty())
}
}
是否有首選方法?就純粹的行爲測試而言,第二種選擇似乎更適合我,因爲測試夾具的重點在於行爲。
但是,爲了便於測試,我傾向於第一種方法。我在測試中發現的大部分疼痛是設置。也就是說,我有一個特別的狀態得到SUT。一旦進入該狀態通常只有一行代碼來實際調用它的某些行爲。因此,每個類有多個行爲(即每個設置上下文)利用了該類的一次性設置。
所以,我正在尋找想法。一種方法比另一種更受歡迎嗎?