java - 无法覆盖 Junit 中的测试用例?
问题描述
我试图通过为 Stack 方法 push()、pop() 和 peak() 编写单元测试来理解 Junit 和 eclEmma。但他们都失败了。似乎没有一个被覆盖。我最初认为这是我的代码在如何将整数对象推送到堆栈上的语法问题,但似乎这不是问题。
import static org.junit.jupiter.api.Assertions.*;
import org.junit.Before;
import org.junit.jupiter.api.Test;
import java.util.Stack;
public class StackMethodTesting {
private Stack<Integer> aStackOfInt;
@Before
public void initialize()
{
aStackOfInt = new Stack<Integer>();
System.out.println(" a new Stack");
}
@Test
public void testpush() {
aStackOfInt.push(new Integer(1));
assertEquals(true,aStackOfInt.peek().equals(new Integer(1)));
}
@ Test
public void testPop() {
aStackOfInt.push(22);
assertEquals (new Integer(22),aStackOfInt.pop());
}
@Test
public void testpeek()
{
aStackOfInt.push(222);
assertEquals(new Integer(222),aStackOfInt.peek());
}
}
我假设突出显示的红色代码表示它们没有被执行。如果是这样,我不知道出了什么问题。以下是运行结果:
解决方案
您在测试中混入 JUnit API,JUnit4 和 JUnit5。所以,如果你想使用最新的(我推荐你的 JUnit 5),你应该从 JUnit5 包中导入所有内容:org.junit.jupiter。
因此,您的测试用例将如下所示(注意我还做了一些其他更改):
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Stack;
class StackMethodTesting {
private Stack<Integer> aStackOfInt;
@BeforeEach
void initialize()
{
aStackOfInt = new Stack<Integer>();
System.out.println(" a new Stack");
}
@Test
void testpush() {
Integer value = new Integer(1);
aStackOfInt.push(value);
assertTrue(aStackOfInt.peek().equals(value));
}
@Test
void testPop() {
Integer value = new Integer(22);
aStackOfInt.push(value);
assertEquals(value, aStackOfInt.pop());
}
@Test
void testpeek()
{
Integer value = new Integer(222);
aStackOfInt.push(value);
assertEquals(value, aStackOfInt.peek());
}
}
您可以在此处阅读有关 JUnit5 的更多信息https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations。
推荐阅读
- javascript - 在 vuejs 中使用带有 forEach 的道具
- python - 如何管理xml模板?需要一些例子
- c++ - 当类成员参数具有相同名称时,如何定义构造函数?
- r - 通过附加约束按组获取最大值
- swift - UI 测试目标无法识别来自 xcworkspace 中自定义框架的 Swift 包
- javascript - Typeorm 多对多与 javascript 中的枢轴
- javascript - 我的 select2 jquery 仅适用于第一种形式
- javascript - 使用 node.destroy() 时如何删除 konva 形状/图像
- android - 在 android studio 中更改默认语言
- javascript - 禁用 javascript 时无法抓取网页的所有元素