我试图通过为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());
}
}
我假设突出显示的红色代码表示它们未被执行。如果是这样,我不知道出了什么问题。运行结果如下:
答案 0 :(得分:0)
您在测试JUnit4和JUnit5中混入JUnit API。 因此,如果要使用最新的版本(我建议您使用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());
}
}
您可以在https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations上了解有关JUnit5的更多信息。