我目前正在学习如何实现JUnit测试,并且我正在为我的Stack实现使用isEmpty()方法。这是我想测试的方法:
boolean isEmpty(){
if(firstFree == 0) return true;
else return false;
}
这是我的考验:
public void isEmptyTest(){
assertTrue(onpStack.isEmpty());
assertFalse(onpStack.isEmpty());
}
如果堆栈有或没有元素没有区别 - 测试总是失败。我知道为什么:因为它不能同时拥有和没有元素。在这两种情况下,我都无法弄清楚如何通过测试。有没有正确的方法?或者我应该为这个isEmpty()方法做两个不同的测试吗?
答案 0 :(得分:7)
顾名思义,单元测试用于测试代码的测试部分。堆栈不能为空且不能同时为空。很少有人建议,请按如下方式分离您的测试用例
public void isEmptyTest(){
Stack emptyStack = new Stack();
assertFalse(emptyStack.isEmpty());
}
public void isEmptyTest(){
Stack nonEmptyStack = new Stack();
nonEmptyStack.push(1);
assertFalse(nonEmptyStack.isEmpty());
}
我还建议您使用isEmpty()方法的简短方法来使代码更清晰,更易理解
boolean isEmpty(){
return (firstFree == 0);
}
希望有所帮助!
答案 1 :(得分:0)
对于第一种情况,使用空堆栈对象测试isEmpty()方法返回true。
对于第二种情况,使用非空堆栈对象测试isEmpty()方法返回false。