早稲田大学の太田です。
> > public void testStack() {
> > Stack anStack = new Stack();
> > Integer anInteger = new Integer(777);
>
> > assert(anStack.empty()); //1
>
> > anStack.push(anInteger);
> > anStack.pop();
>
> > assert(anStack.empty()); //2
>
> > }
>
> 1 は,コンストラクタの事後条件,2 は pop の事後条件に対応し
> ていると思っていて,逆に事前条件のテストは UnitTest に対応し
> ないんだろうな,と思っています.
私は「1」を
anStack.push(anInteger);
anStack.pop();
の事前条件と考えていたのですが。コンストラクタの事後条件は別のところ
でテスト済みという仮定でした。
> 強いて言うと,
>
> public void testStack() {
> Stack anStack = new Stack();
> Integer anInteger = new Integer(777);
>
> try {
> anStack.pop();
> fail();
> } catch (PreconditionException e) {
> assert(true);
> }
> }
>
> こんなんかな,と思うのですが,何か違っている気がして来まし
> た.^^;
こちらはOKだとおもいます。この方向で行くと色々な事後条件が考えられま
すね。こう考えるとやはり、Bashirが「Testing Object-Oriented Software」
でいっていたようにメソッドの順列をすべてテストしなければならないという
のも面倒ですけど真実であるような気がしてきました。
早稲田大学大学院理工学研究科情報科学専攻M2 太田健一郎
e-mail Address oota@....jp
oota@....jp