首页 > 解决方案 > 无法覆盖 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());
    }


}

我假设突出显示的红色代码表示它们没有被执行。如果是这样,我不知道出了什么问题。以下是运行结果:

在此处输入图像描述

标签: java

解决方案


您在测试中混入 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


推荐阅读