JUnit测试isEmpty()堆栈方法

shu*_*rok 2 java junit

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

boolean isEmpty(){
    if(firstFree == 0) return true;
    else return false;
}
Run Code Online (Sandbox Code Playgroud)

这是我的考验:

public void isEmptyTest(){
    assertTrue(onpStack.isEmpty());
    assertFalse(onpStack.isEmpty());
}
Run Code Online (Sandbox Code Playgroud)

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

小智 7

顾名思义,单元测试用于测试代码的测试部分.堆栈不能为空且不能同时为空.很少有人建议,请按如下方式分离您的测试用例

public void isEmptyTest(){
  Stack emptyStack = new Stack();
  assertFalse(emptyStack.isEmpty());
}

public void isEmptyTest(){
  Stack nonEmptyStack = new Stack();
  nonEmptyStack.push(1);
  assertFalse(nonEmptyStack.isEmpty());
}
Run Code Online (Sandbox Code Playgroud)

我还建议您使用isEmpty()方法的简短方法来使代码更清晰,更易理解

boolean isEmpty(){
   return (firstFree == 0);
}
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!