JUnit测试isEmpty()堆栈方法

时间:2017-05-31 11:47:24

标签: java junit

我目前正在学习如何实现JUnit测试,并且我正在为我的Stack实现使用isEmpty()方法。这是我想测试的方法:

boolean isEmpty(){
    if(firstFree == 0) return true;
    else return false;
}

这是我的考验:

public void isEmptyTest(){
    assertTrue(onpStack.isEmpty());
    assertFalse(onpStack.isEmpty());
}

如果堆栈有或没有元素没有区别 - 测试总是失败。我知道为什么:因为它不能同时拥有和没有元素。在这两种情况下,我都无法弄清楚如何通过测试。有没有正确的方法?或者我应该为这个isEmpty()方法做两个不同的测试吗?

2 个答案:

答案 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)

  1. 对于第一种情况,使用空堆栈对象测试isEmpty()方法返回true。

  2. 对于第二种情况,使用非空堆栈对象测试isEmpty()方法返回false。