私は現在、SpecFlow を使用して BDD を学習/テストしていますが、うまく機能しています。
質問をすることを選択する前に、 を読みました。言及されていないシナリオthis one
のために、同じ問題が解決されているという事実にもかかわらず、質問をしなければならないと感じました。Exception
私は実際にこのシナリオをテストしています:
Scenario: I should get an error whenever I try to remove an item from an empty stack
Given I have an empty stack
When I pop from it
Then I should get an error
public class StackBehaviour {
public void GivenIHaveAnEmptyStack() { stack = new CustomStack<string>(); }
// This will throw whenever called!
// So the Then method will never be run!
// I feel like I should just put a comment which says why it's empty,
// allowing a fellow programmer to understand the exact intention.
public void WhenIPopFromIt() { stack.Pop(); }
// It is here that it verifies whether the CustomStack meets the expected behaviour.
public void ThenIShouldGetAnError() {
Assert.Throws<IndexOutOfRangeException>(delegate {
stack.Pop();
});
}
private CustomStack<string> stack;
}
public class CustomStack<T> {
public T Pop() {
if (stack.Count == 0)
throw new IndexOutOfRangeException("Cannot pop from an empty stack!");
T item = stack[stack.Count-1];
stack.RemoveAt(stack.Count-1);
return item;
}
private ArrayList stack = new ArrayList();
}
When
ビジネス要件に情報が不足しないように、メソッドにコメントを残すことは正しいと思います。また、コード ビハインドについては、コメントすることで正確に意図を明確にします。
どう思いますか?私がそれを作るべきではない他のアイデアはありますか?